У меня есть простой метод, который я хочу протестировать с помощью RSpec. Я хочу убедиться, что apply
уменьшает player.capacity
на единицу. Для этого я издевался над объектом игрока и проверяю, получает ли он правильные сообщения.
Код
class DecreaseCapacity < Item
def apply player
player.capacity -= 1
end
end
Тестовое задание
describe DecreaseCapacity, "#apply" do
it "should decrease capacity by one" do
player = double()
player.should_receive(:capacity) # reads the capacity
player.should_receive(:capacity=) # decrement by one
subject.apply player
end
end
Сообщение об ошибке
1) DecreaseCapacity#apply should decrease the player's capacity by one
Failure/Error: subject.apply player
undefined method `-' for nil:NilClass
# ./item.rb:39:in `apply'
# ./item_spec.rb:25
Что тут происходит? Почему player.capacity -= 1
пытается позвонить -
на nil
?