проверка нескольких атрибутов класса с помощью Rspec - PullRequest
1 голос
/ 25 марта 2020

У меня есть класс с 3 атрибутами: game_finished, slots_selected и winner, и я хочу проверить эти три одновременно

следующим образом: если slots_selected имеет значение меньше 9 и победитель равен 0 и game_finished - false, тест должен пройти.

Как я могу проверить это условие с помощью RSpe c?

Я пробовал следующим образом:

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

Как я могу это сделать?

1 Ответ

1 голос
/ 25 марта 2020

Лучше иметь отдельные ожидания для каждого объекта

expect(game.game_finished).to eq(false) 
expect(game.winner).to eq(0)
expect(game.slots_selected < 9).to be(true)

Но похоже, что вы запутали логи c здесь. TDD должно помочь вам написать лучший код. Изолируйте бизнес-логику c на логические значения, необходимые для ответа на вопрос типа «истина» или «ложь». Но Вы не дали понять, какими должны быть правила для вашей логики c. Вот, пожалуй, лучший пример того, как вы могли бы сделать это:

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

Идея в том, что вы должны проверять вывод или результаты методов. Сначала напишите спецификации, а затем заставьте их пройти.

...