如何使用RSpec来测试negamax?
How to use RSpec to test negamax?
我正在玩井字游戏,我有一个 #negamax
方法 returns 是计算机移动到的最佳位置,还有一个 #winner
方法 returns 1
(计算机获胜)或 -1
(用户获胜)。我如何测试 #negamax
以保证它的实现是正确的并且用户 never 获胜?
我在一些地方有一些测试用例,以测试它 returns 最好的位置,确实如此,但它没有涵盖所有可能的情况。现在,这就是我所拥有的(除了最佳选择的测试用例):
it 'never allows user to win' do
until game_over?
unless is_ai?
pos = empty_positions.sample
move(pos, user)
else
pos = negamax(0, 1, -100, 100)
move(pos, computer)
end
end
if game.won?
expect(winner).to eq(1)
else
expect(winner).to be_nil
end
end
只是'hope'测试永远不会失败似乎不是很有效。什么是更好的方法来完成它?
but it does not cover all possible cases.
别担心,这很正常,模拟应用程序的所有使用方式几乎是不可能的。测试一些东西可能会导致结果的巨大增加。测试“一切”都是浪费时间。那是因为“一切”都不重要。只有某些事情很重要。正确的事情很重要。
我正在玩井字游戏,我有一个 #negamax
方法 returns 是计算机移动到的最佳位置,还有一个 #winner
方法 returns 1
(计算机获胜)或 -1
(用户获胜)。我如何测试 #negamax
以保证它的实现是正确的并且用户 never 获胜?
我在一些地方有一些测试用例,以测试它 returns 最好的位置,确实如此,但它没有涵盖所有可能的情况。现在,这就是我所拥有的(除了最佳选择的测试用例):
it 'never allows user to win' do
until game_over?
unless is_ai?
pos = empty_positions.sample
move(pos, user)
else
pos = negamax(0, 1, -100, 100)
move(pos, computer)
end
end
if game.won?
expect(winner).to eq(1)
else
expect(winner).to be_nil
end
end
只是'hope'测试永远不会失败似乎不是很有效。什么是更好的方法来完成它?
but it does not cover all possible cases.
别担心,这很正常,模拟应用程序的所有使用方式几乎是不可能的。测试一些东西可能会导致结果的巨大增加。测试“一切”都是浪费时间。那是因为“一切”都不重要。只有某些事情很重要。正确的事情很重要。