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();
});
});
我有一些 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();
});
});