如果我想为一个将东西加在一起的计算器编写一个测试。我可能会这样定义我的测试:
const tests = [
{
input: [1, 2],
expected: 3,
},
{
input: [2, 1],
expected: 3,
},
{
input: [3, 4],
expected: 7,
},
{
input: [2, 10],
expected: 12,
},
{
input: [2, 5],
expected: 7,
},
...
]
tests.forEach((t) => {
expect(add(t.input)).toEqual(t.expected)
})
Run Code Online (Sandbox Code Playgroud)
问题是,如果其中一项测试失败,错误只会显示:
Expected: "7"
Received: "10"
216 | tests.forEach((t) => {
> 217 | expect(add(t.input)).toEqual(t.expected)
| ^
218 | })
Run Code Online (Sandbox Code Playgroud)
由此看来,我分不清是3+4算错了,还是2+5算错了。
另一种方法是不使用数组,而是将每个数组定义为自己的测试。然而,这需要更多的代码,并且您需要将expect
语句复制粘贴到各处。
那么,测试复杂的计算函数(需要传递许多不同的输入排列以确保其正常工作)的最佳方法是什么?