Rspec 3.1.0 - 为什么 #to 方法不适用于"True"?



为什么只有(已弃用的)#should语句对我有效?被注释掉的#expect语句失败了,尽管它们完全遵循了课程中的示例。

require 'rails_helper'
describe Vote do
  describe "validations" do
    describe 'value validation' do
      it "only allows -1 or 1 as values" do
        vgood1 = Vote.create :value => 1
        vgood2 = Vote.create :value => -1
        vbad1 = Vote.create :value => 0
        vbad2 = Vote.create :value => 2
        vbad3 = Vote.create
        expect (vgood1.valid?).should == true#eq(true)
        # expect (vgood2.valid?).to eq(true)
        # expect (vbad1.valid?).to eq(false)
        # expect (vbad2.valid?).to eq(false)
        # expect (vbad3.valid?).to eq(false)
      end
    end
  end
end

以下是课程中的示例

Failures:
  1) Vote validations value validation only allows -1 or 1 as values
     Failure/Error: expect(bad_v.valid?).to eq(false)
       expected: false
            got: true

这看起来像是一个空白错误。

由于隐含的括号,Ruby读到:

expect (vgood2.valid?).to eq(true)

如下:

expect((vgood2.valid?).to eq(true))

在后一种情况下,(vgood2.valid?)是没有定义to方法的对象

最新更新