我有一个具有3个属性的类:game_finished,slots_selected和Winner,我想同时检查这三个属性
这样:如果slot_selected的值小于9并且获胜者等于0,并且game_finished为false,则测试应通过。
如何使用RSpec验证该条件?
我尝试过这种方式:
it 'some description' do
game = Game.new
expect([game.game_finished, game.winner, game.slots_selected).to eq([false, 0, 8])
end
这里的问题是,slots_selected是一个固定的数字,我应该用小于9的任何数字对其进行测试
我该怎么做?
最好对每个对象有不同的期望
expect(game.game_finished).to eq(false)
expect(game.winner).to eq(0)
expect(game.slots_selected < 9).to be(true)
但是似乎您在这里混淆了逻辑。 TDD应该可以帮助您编写更好的代码。将业务逻辑隔离为回答真或假类型问题所需的布尔值。但是您尚未明确逻辑的规则。这也许是一个更好的例子,说明如何执行此操作:
let(:game) { Game.new }
it 'checks that game has not finished yet' do
expect(game.finished?).to be false
end
it 'checks that game has not sarted yet' do
expect(game.started?).to be false
end
it 'starts games less than 9 slots' do
expect(game.slots_selected < 9).to be(true)
end
想法是您应该测试方法的输出或结果。首先编写规格,然后通过。