目前,我已使用mocha
和chai
为两个功能创建了测试。
他们应根据HTTP POST/GET
请求的不同参数做出不同的反应。
但是,我想知道检查3个测试用例的最佳做法是什么,我希望它们具有相同的输入。
例如,
describe('Function A', function() {
it('should retrun 404 when receipt ID is invalid', function(done) {
chai.request(server)
.post('/generateSales/')
.send(validParams1)
.end(function(err, res){
res.should.have.status(404);
done();
});
});
it('should retrun 404 when receipt ID is invalid', function(done) {
chai.request(server)
.post('/generateSales/')
.send(validParams2)
.end(function(err, res){
res.should.have.status(404);
done();
});
});
it('should retrun 404 when receipt ID is invalid', function(done) {
chai.request(server)
.post('/generateSales/')
.send(validParams3)
.end(function(err, res){
res.should.have.status(404);
done();
});
});
});
在单个it
块中测试所有参数(validParams1,2,3)的正确方法是什么? (我希望他们有相同的回应)
答案 0 :(得分:0)
由于异步问题,您不应该在it
块内调用循环。
我使用it-each
模块
以下链接显示了当您想在it
块中使用20个API或20个测试用例时如何使用mocha处理异步测试循环
答案 1 :(得分:0)
https://mochajs.org/#dynamically-generating-tests
describe('Function A', function() {
let paramSets = [
validParams1,
validParams2,
validParams3
]
paramSets.forEach((paramSet)=>{
// call it multiple times.
it('should return 404 when receipt ID is invalid', function(done) {
// this is technically a different function each time
chai.request(server)
.post('/generateSales/')
.send(paramSet) // this is different for each function/test
.end(function(err, res){
res.should.have.status(404);
done();
});
});
// never call assert here.
// The function passed to 'it' runs as the test.
// The function passed to 'describe' runs first, and sets up all the tests.
});
});