只是尝试一些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.size
是8
(所以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