0

只是尝试一些 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,它会通过

我的电脑有问题吗???

4

2 回答 2

3

have错误地使用了匹配器。从文档

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

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

hometeam1.players_on.size.should == 11

并且11.size8(所以8.should == 11,这当然是错误的)。您应该改用常规匹配器:

hometeam1.players_on.should == 11
于 2013-07-24T01:25:09.453 回答
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
于 2013-07-24T02:59:26.773 回答