我刚开始学摩卡和茶。我被困在这里
const UserService = new Service();
describe("user-services.spec", () => {
describe("Services testing", () => {
before((done) => {
db();
userModel.remove({}, done);
})
after((done) => {
mongoose.connection.close();
done();
})
it("should add user to db", () => {
let id = 4;
let name = "Alen";
(async () => {
let result = await UserService.addUser(id, name);
console.log("result", result);
result.should.have.property("_i");
//done();
})();
})
})
})
现在我有两个问题基于上面的代码
这个测试用例是否总是通过,即使我更改了"_id";_i"我不知道怎么做
如果我想在上面的代码中使用done并取消done()的注释,那么它会给出错误
超时时间超过2000ms。对于异步测试和钩子,请确保"done()";被称为;如果返回一个Promise,确保它被解析。
对于你的第一个问题,我已经使用result.should.have.property("_i");
进行了测试,它失败了。
我像这样模拟了这个方法:
async function addUser(id, name){
return {_id:""}
}
抛出
Uncaught AssertionError: expected { _id: '' } to have property '_i'
。
检查返回的值。你也可以查看chai文档
对于第二个问题,done()
是调用Mocha的回调函数。此外,Mocha有一个超时(最大)。测试的时间将等待)。如果在没有调用done()
的情况下达到最大时间,Mocha将抛出一个错误,说它尚未完成(done未被调用)。
如果你不调用done()
Mocha将卡住等待不知道何时功能完成。您得到错误Timeout of 2000ms exceeded
,因为2秒是默认值,如文档所述。
指定测试用例超时,默认为两(2)秒(2000毫秒)。超过此时间的测试将被标记为失败。