为什么这个RSpec示例会有这样的行为

  • 本文关键字:RSpec ruby rspec
  • 更新时间 :
  • 英文 :


只是尝试一些RSpec预期,并想知道为什么会发生这种情况

describe "rspec" do
    class Team
        def players_on
        11
        end
    end
    it "does wierd things" do           
        hometeam1 = Team.new
        hometeam1.should have(11).players_on         
    end
end

RSpec显示错误

 Failure/Error: hometeam1.should have(11).players_on
       expected 11 players_on, got 8

如果我用8代替11,期望它通过

我的电脑出问题了吗???

您使用have匹配器不正确。来自文档:

RSpec提供了几个匹配器,可以轻松地设置对集合的大小…这些作用于任何类似集合的对象——对象只需要响应#size#length(或两者)。

这意味着它在对象上调用size/length,因此您的期望值与相同

hometeam1.players_on.size.should == 11

并且11.size8(所以8.should == 11当然是假的)。你应该使用一个常规的匹配器:

hometeam1.players_on.should == 11

这是我应该做的。。。。

describe "rspec" do
    class Team
        def initialize
            @x = ["tom","dick","harry"]
        end
        def players_on_field
            @x      
        end
    end
    it "does wierd things" do           
        hometeam1 = Team.new
        hometeam1.should have(3).players_on_field        
    end
end

最新更新