3

我有一些 API,如果我用邮递员测试它们,它工作正常。但是如果我尝试在 mocha js 中使用相同的数据测试该 API,一些 API 正在工作,而一些 API 正在给我一个错误,如“500 内部服务器错误”和“400 错误请求”。

我确信我在邮递员和 mocha 测试脚本中传递了相同的数据、相同的请求和相同的授权详细信息。

我已经在 mocha 中尝试过这个并且我在邮递员中传递了相同的数据,而不是为什么 mocha 给我和这样的错误。我的所有服务器和数据库都已启动并且工作正常。

it("Updating User details: ", function (done) {
        server
            .put(apiUrl + "/user")
            .set({
                "name": "Vinay Pandya",
                "photo": "http://tamilcinema.com/wp-content/uploads/2015/05/madhavan.jpg",
                "email": "mail@mail.com",
                "gender": "M"
            })
            .set({"Authorization": token})
            .expect(200)
            .end(function (err, res) {
                if (err)
                    throw err;
                res.status.should.equal(200);
                res.body.status.should.equal("success");
                //console.info(JSON.stringify(res.body));
            });
        done();
    });
4

2 回答 2

0

您应该将done调用放在异步请求中。因此,要修改您的示例代码:

it("Updating User details: ", function (done) {
    server
        .put(apiUrl + "/user")
        .set({
            "name": "Vinay Pandya",
            "photo": "http://tamilcinema.com/wp-content/uploads/2015/05/madhavan.jpg",
            "email": "mail@mail.com",
            "gender": "M"
        })
        .set({"Authorization": token})
        .expect(200)
        .end(function (err, res) {
            if (err)
                throw err;
            res.status.should.equal(200);
            res.body.status.should.equal("success");
            //console.info(JSON.stringify(res.body));
            done();
        });
});
于 2016-02-27T06:24:21.493 回答
0

我解决了这个问题。我使用的是 SET() 而不是 SEND()。如果我想发送数据,我应该使用 SEND()。SET() 用于设置 api 请求的标头。

it("Updating User details: ", function (done) {
this.timeout(300);
        server
            .put(apiUrl + "/user")
            .send({
                "name": "Vinay Pandya",
                "photo": "http://tamilcinema.com/wp-content/uploads/2015/05/madhavan.jpg",
                "email": "mail@mail.com",
                "gender": "M"
            })
            .set({"Authorization": token})
            .expect(200)
            .end(function (err, res) {
                if (err)
                    throw err;
                res.status.should.equal(200);
                res.body.status.should.equal("success");
                //console.info(JSON.stringify(res.body));
                done();
            });

    });
于 2016-02-27T06:32:23.797 回答