使用Rspec进行多类属性验证

问题描述 投票:1回答:1

我有一个具有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的任何数字对其进行测试

我该怎么做?

ruby rspec
1个回答
0
投票

最好对每个对象有不同的期望

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

想法是您应该测试方法的输出或结果。首先编写规格,然后通过。

© www.soinside.com 2019 - 2024. All rights reserved.