2013-07-24 2 views
0

Просто попробовать некоторые ожидания 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 

Если я заменяю 11 с 8 в ожидании она проходит

Что-то не так с моим компьютером ???

ответ

3

Вы используете неправильный матчи have. От the docs:

RSpec предоставляет несколько matchers, которые позволяют легко установить ожидания относительно размера коллекции ... Они работают на любой коллекции, как объектно-объект просто должен реагировать на #size или #length (или оба).

Это означает, что он называет size/length на объекте, так что ваши ожидания так же, как:

hometeam1.players_on.size.should == 11 

и 11.size является 8 (так 8.should == 11, который, конечно, ложь). Вы должны использовать обычный Искатель вместо:

hometeam1.players_on.should == 11 
+0

спасибо @ Андрей. –

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 
Смежные вопросы