在superagent请求中调用的done()不起作用

时间:2017-09-03 21:01:12

标签: javascript node.js testing mocha superagent

我正在创建一个具有在登录时发布功能的应用。我在mocha中编写了以下测试代码。我收到这个错误:

Error: Timeout of 2000ms exceeded. For async tests and hooks, ensure "done()" is called; if returning a Promise, ensure it resolves.

我认为在使用done()时我犯了一些错误。所有其他断言语句都已通过。让我知道我哪里出错,或者如果您需要更多信息。

it("Login and post", function(done) {
    superagent
        .post(URL_ROOT + "/register")
        .send({
            email: "posttest@test.com",
            password: "posttest"
        })
        .end(function(err, res) {
            assert.ifError(err);
            var token = res.body.token;
            superagent
                .post(URL_ROOT + "/post")
                .send({
                    content: "testing post",
                    user: jwt.decode(token).id
                })
                .set("Authorization", "test_scheme " + token)
                .end(function(err, res){
                    assert.ifError(err);
                    assert.equal(res.body.post.content, "testing post");
                    done();
                });
        });
});

1 个答案:

答案 0 :(得分:0)

您的测试运行时间可能超过2秒:在回复it的第一行,superagent .post(URL_ROOT + "/register")...之前添加此行:

this.timeout(30000)

这使您只能在30秒后而不是2秒时超时。