RSpecでテストしたい簡単な方法があります。apply
確実に1つずつ減らしていきたいです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
ですか?