Я очень застреваю, когда дело доходит до написания теста, чтобы проверить, равна ли переменная экземпляра определенному значению, тогда он должен вызывать определенный метод и что если он меньше этого значения , то это не должно. У меня есть переменная экземпляра, @counter, который инициализируется в 0, и эти методы:rspec проверить, если один метод вызывает другой метод
def increment_counter
@counter += 1
if @counter == 9
tie_game?
end
end
def tie_game?
puts "The game was a tie. Nicely played #{@player1} & #{@player2}!"
play_again
end
Я хочу написать тест, чтобы проверить, что при @counter равен 9, что tie_game? и что, когда он меньше 9, он не вызывается.
Это то, что я мог придумать, но это не так:
describe "increment_counter" do
context "counter equals 9" do
it "calls tie_game?" do
game.instance_variable_set(:@counter, 9)
expect(increment_counter).to receive(:tie_game?)
end
end
end
спасибо за ваш совет. Кажется, что это работает, но когда я запускаю его в терминале, прежде чем он расскажет мне о любых сбоях, он запускает метод play_again. Знаете ли вы, как я должен идти, чтобы убедиться, что это не так? –