Chai,测试该函数会抛出正确的错误
Chai, testing that function throws correct error
基本上,我正在练习使用 Mocha 进行测试,并且我编写了一个序列号应该是唯一的模式。我想要一个测试,表明当我再次尝试使用该序列号时,它会抛出 Mongo 重复键错误 E11000。
phaseSchema.statics.createPhase = function(name,sernum,desc){
var phase = mongoose.model('phases', phaseSchema)
var newphase = new phase({NAME: name, SERNUM: sernum,DESC: desc});
newphase.save(function(err,newphase){
if(err)
return console.error(err);
})
}
我尝试了很多不同的方法,但出现超时错误或断言被忽略,我无法弄清楚。
我觉得我得到的最接近的是
it("throws error when non unique sequence number is used", function(done){
(function () {
ucdphase.createPhase('d0','develop',0,"desc")
}).should.throw("E11000 duplicate key error index: test.ucdphase.$");
done();
});
但是接下来会发生什么,它将错误打印到控制台,然后说
"AssertionError: expected [Function] to throw an error.
根据chai documentation,你应该使用expect
开始断言。
另外我认为您不需要使用 done
回调。该回调用于测试异步代码。
试试这个:
it("throws error when non unique sequence number is used", function(){
expect(function () {
ucdphase.createPhase('d0','develop',0,"desc")
}).to.throw("E11000 duplicate key error index: test.ucdphase.$");
});
基本上,我正在练习使用 Mocha 进行测试,并且我编写了一个序列号应该是唯一的模式。我想要一个测试,表明当我再次尝试使用该序列号时,它会抛出 Mongo 重复键错误 E11000。
phaseSchema.statics.createPhase = function(name,sernum,desc){
var phase = mongoose.model('phases', phaseSchema)
var newphase = new phase({NAME: name, SERNUM: sernum,DESC: desc});
newphase.save(function(err,newphase){
if(err)
return console.error(err);
})
}
我尝试了很多不同的方法,但出现超时错误或断言被忽略,我无法弄清楚。
我觉得我得到的最接近的是
it("throws error when non unique sequence number is used", function(done){
(function () {
ucdphase.createPhase('d0','develop',0,"desc")
}).should.throw("E11000 duplicate key error index: test.ucdphase.$");
done();
});
但是接下来会发生什么,它将错误打印到控制台,然后说
"AssertionError: expected [Function] to throw an error.
根据chai documentation,你应该使用expect
开始断言。
另外我认为您不需要使用 done
回调。该回调用于测试异步代码。
试试这个:
it("throws error when non unique sequence number is used", function(){
expect(function () {
ucdphase.createPhase('d0','develop',0,"desc")
}).to.throw("E11000 duplicate key error index: test.ucdphase.$");
});