Ich bin sehr fest, wenn es darum geht, einen Test zu schreiben, um zu überprüfen, ob eine Instanzvariable einen bestimmten Wert hat, dann sollte es eine bestimmte Methode aufrufen, und wenn es kleiner als dieser Wert ist , dann sollte es nicht. Ich habe eine Instanzvariable, @Counter, die bei 0 initialisiert wird, und diese Methoden:rspec Überprüfen, ob eine Methode eine andere Methode aufruft
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
Ich möchte einen Test schreiben, dass zu überprüfen, wenn @Counter gleich 9 ist, dass tie_game? heißt, und wenn es weniger als 9 ist, wird es nicht aufgerufen.
Dies ist, was ich tun konnte, aber es ist falsch:
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
danke für Ihren Rat. Dies scheint zu funktionieren, aber wenn ich es im Terminal ausführe, bevor es mich über irgendwelche Fehler informiert, wird die Methode play_again ausgeführt. Weißt du, wie ich dafür sorgen sollte, dass es das nicht macht? –