使用 Q.js 承诺进行单元测试:超时超过 2000 毫秒



我正在使用 Q.js 库来模拟异步行为,使用 promise

我有一个有迹的后端 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.

我试图将摩卡超时设置为 15000 毫秒以上,但没有帮助

看起来您的错误处理程序与测试用例相同then的一部分。这意味着您不会捕获预期引发的任何错误。试试这个,看看你是否收到不同的错误:

it("Api test", (done) => {
        return api.post({})
            .then(value => {
                expect(value).to.exist;
                done();
            }).catch(error => { 
                done(error);
            });
 });

最新更新