我正在看Chai文档,我想知道,因为在现场我看不到任何解释,为什么不建议这样做。使用此功能可能会出错,这有什么不好呢?
我正在测试我的API调用是否返回数组中的100个对象。由于我的数据库中没有太多条目,因此我想使用此代码。
柴站点上的代码示例:
expect('foo').to.have.lengthOf(3); // Recommended
expect('foo').to.have.lengthOf.at.most(4); // Not recommended
我的测试示例:
it('should return 100 object by default, if limit set to 0', (done) => {
chai.request(server)
.get('/api/v1/assets?limit=0')
.then((res) => {
expect(res).to.have.status(200);
expect(res.body).to.be.a('array');
expect(res.body).to.have.lengthOf.at.most(100);
done();
})
.catch((err) => {
done(err)
})
});
不建议这样做,因为它对于断言不是很特定。如果您使用at.most.(100)
并且API返回50或1或什至是一个空数组,它仍然会通过。该文档假设大多数人希望测试如果返回空数组而失败,并且希望检查确切的数字。
理想的做法是在数据库中创建101个条目(也许通过其他端点?),然后检查要返回的正好100个。但是,如果这很困难,您至少可以检查大于0但小于100的值
expect(res.body).to.have.lengthOf.at.least(1).and.lengthOf.at.most(100);
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句