【发布时间】:2020-08-26 05:08:55
【问题描述】:
如果我想为计算器编写一个将事物加在一起的测试。我可能会这样定义我的测试:
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)
})
问题是,如果其中一项测试失败,错误只会显示:
Expected: "7"
Received: "10"
216 | tests.forEach((t) => {
> 217 | expect(add(t.input)).toEqual(t.expected)
| ^
218 | })
由此,我分不清是3+4算错了,还是2+5算错了。
替代方法是代替数组,将每个定义为自己的测试。但是,这需要更多代码,并且您需要将expect 语句复制粘贴到任何地方。
那么测试复杂计算函数的最佳方法是什么?您需要传入许多不同的输入排列以确保其正常工作?
【问题讨论】:
标签: unit-testing testing jestjs automated-tests