Mocha、Chai - 循环测试

4

我应该如何编写单元测试来测试以下函数:50 < n < 100?除了在测试中使用循环的方式,还有更好的方法吗?我可以传递参数到测试函数中,以生成基于这些参数的测试用例吗?例如:

it('should return $n+1', function(n){
  expect(add(n)).to.be.eql(n+1);
},[ 1, 2, 3])

并且应该显示出3个不同的测试结果:

should return 1+1
should return 2+1
should return 3+1

https://plnkr.co/edit/HBJP46lyTbBkH4Pclu2S


如果Chai无法以那种方式工作,那听起来像是一厢情愿的想法。 - tadman
1个回答

8
如果您正在使用Mocha
[ 1, 2, 3 ].forEach(value => {
  it(`should return ${ value }+1`, () => {
    expect(add(value)).to.be.eql(value + 1);
  })
});

// The same, but for older versions of Node.js/browser:
[ 1, 2, 3 ].forEach(function(value) {
  it('should return ' + value + '+1', function() {
    expect(add(value)).to.be.eql(value + 1);
  })
});

1
这是 Mocha 文档中关于此部分的直接链接:https://mochajs.org/#dynamically-generating-tests - Prusdrum
当你在测试中运行超过几行代码时,很容易出现错误。有时你会发现错误会引用错误的代码行。在数组中应该包含测试案例信息,而不仅仅是值和期望结果,并且该信息应该告诉你失败的具体位置,因为chai不会提供这个信息。使用expect(expectation, testCaseMessage)方法来进行测试。 - Mihai

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接