Api 通过 postman 但在 mocha js 中失败

Api passes in postman but it fails in mocha js

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

我确信我在 postman 和 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();
    });

您应该将 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();
        });
});

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

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();
            });

    });