使用 Q.js promise 进行单元测试:超时超过 2000 毫秒
Using Q.js promise for unit-tests: timeout of 2000ms exceeded
我正在使用 Q.js 库通过 promise
来模拟异步行为
我有一个 stubed 后端 api
class ApiStub {
constructor(){
this.deferred = Q.defer();
}
post(url, data) {
if (data) {
this.deferred.resolve(data);
} else {
this.deferred.reject(new Error("Invalid data"));
}
return this.deferred.promise;
}
}
我正在尝试测试它:
before(() => api = new ApiStub());
it("Api test", (done) => {
return api.post({})
.then(value => {
expect(value).to.exist;
done();
}, error => {
done(error);
});
});
但我得到了 Error: timeout of 2000ms exceeded. Ensure the done() callback is being called in this test.
我尝试将 mocha 超时设置超过 15000 毫秒,但没有帮助
看起来您的错误处理程序与您的测试用例是同一个 then
的一部分。这意味着您不会 catch any errors thrown by the expect。试试这个,看看你是否得到不同的错误:
it("Api test", (done) => {
return api.post({})
.then(value => {
expect(value).to.exist;
done();
}).catch(error => {
done(error);
});
});
我正在使用 Q.js 库通过 promise
我有一个 stubed 后端 api
class ApiStub {
constructor(){
this.deferred = Q.defer();
}
post(url, data) {
if (data) {
this.deferred.resolve(data);
} else {
this.deferred.reject(new Error("Invalid data"));
}
return this.deferred.promise;
}
}
我正在尝试测试它:
before(() => api = new ApiStub());
it("Api test", (done) => {
return api.post({})
.then(value => {
expect(value).to.exist;
done();
}, error => {
done(error);
});
});
但我得到了 Error: timeout of 2000ms exceeded. Ensure the done() callback is being called in this test.
我尝试将 mocha 超时设置超过 15000 毫秒,但没有帮助
看起来您的错误处理程序与您的测试用例是同一个 then
的一部分。这意味着您不会 catch any errors thrown by the expect。试试这个,看看你是否得到不同的错误:
it("Api test", (done) => {
return api.post({})
.then(value => {
expect(value).to.exist;
done();
}).catch(error => {
done(error);
});
});