基本上,我正在练习使用Mocha进行测试,我编写了一个模式,其中序列号应该是唯一的。我想要一个测试,显示当我再次尝试使用该序列号时,它会抛出Mongo Error 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.
答案 0 :(得分:2)
根据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.$");
});