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

时间:2014-09-20 20:26:07

标签: rspec

为什么只有(已弃用的)#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

1 个答案:

答案 0 :(得分:1)

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

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

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

这样:

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

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