我是rspec和ruby的新手,并且在使用双打等方法编写以下方法的测试时遇到问题。
def choices player1_choice, player2_choice
@choices_array = [player1_choice, player2_choice]
end
我尝试了几种方法,但无法做到正确。任何帮助将不胜感激。
答案 0 :(得分:3)
这是此方法的基本单元测试。您不需要为此方法使用double。
describe YourClassName do
context "#choices" do
it "should return an array with 2 player choices" do
player1_choice = "a"
player2_choice = "b"
output = choices(player1_choice, player2_choice)
expect(output.count).to eq(2)
expect(output[0]).to eq(player1_choice)
expect(output[1]).to eq(player2_choice)
end
end
end
双打/存根通常用于包含复杂操作的方法/对象,例如网络连接,与没有实现细节的第三方库集成等。
答案 1 :(得分:0)
克里斯托弗说得对,你不需要为此使用双打。但是,我不同意他每次测试使用多个断言。这通常被认为是不好的做法,我认为这里没有必要。
另外,您究竟想测试什么?你写的方法很不寻常。无论如何,如果不进一步了解你的意图,就不可能知道如何最好地进行。但是,这是一个单断言测试,基本上提供与Christopher的多个断言相同的测试覆盖率:
it "returns an array of two player_choices" do
result = ["a", "b"]
expect(choices("a", "b")).to eq result
end