尝试一些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,那么
我的电脑出了什么问题???
答案 0 :(得分:3)
您错误地使用了have
匹配器。来自the docs:
RSpec提供了几种匹配器,可以轻松设置对它的期望 集合的大小......这些工作适用于任何类似集合的对象 - 对象只需响应
#size
或#length
(或两者)。
这意味着它会在对象上调用size
/ length
,因此您的期望与以下内容相同:
hometeam1.players_on.size.should == 11
且11.size
为8
(所以8.should == 11
,这当然是假的)。您应该使用常规匹配器:
hometeam1.players_on.should == 11
答案 1 :(得分:0)
这就是我应该做的......
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