jasmine-node 不等待 body 完成
jasmine-node doesnt wait for body to be done
我目前能够通过
的测试
expect(response.statusCode).toEqual(200)
但是在下面做这条线
expect(body.name).toEqual('erilcompa')
给我一个未定义的。
console.log(body) 但是给出 body
全部看起来像这样:
var request = require("request");
var base_url = "http://127.0.0.1:3000/api"
describe("Routes Suite", function(){
var customerID;
it("should make a quotation", function(done){
request.post({url:base_url + '/customer',
form: {
'name': 'erilcompa',
'vatNr': '22',
}},
function(error,response, body){
expect(response.statusCode).toEqual(200)
expect(body.name).toEqual('erilcompa')
customerID = body.name
console.log(response.statusCode)
done()
})
})
)}
这可能是显而易见的事情,但非常感谢任何帮助!!
你应该使用JSON.parse来解析正文,因为正文参数的类型是字符串。
var bodyObj = JSON.parse(body);
expect(bodyObj.name).toEqual('erilcompa');
请注意,您的服务器必须发送格式正确的 JSON 格式对象
{"name":"erilcompa"}
你的代码应该是这样的:
var request = require("request");
var base_url = "http://127.0.0.1:3000/api"
describe("Routes Suite", function(){
var customerID;
it("should make a quotation", function(done){
request.post({url:base_url + '/customer',
form: {
'name': 'erilcompa',
'vatNr': '22',
}
},
function(error,response, body){
expect(response.statusCode).toEqual(200);
var bodyObj = JSON.parse(body);
expect(bodyObj.name).toEqual('erilcompa');
customerID = body.name;
console.log(response.statusCode);
done();
})
})
)}
我目前能够通过
的测试expect(response.statusCode).toEqual(200)
但是在下面做这条线
expect(body.name).toEqual('erilcompa')
给我一个未定义的。 console.log(body) 但是给出 body
全部看起来像这样:
var request = require("request");
var base_url = "http://127.0.0.1:3000/api"
describe("Routes Suite", function(){
var customerID;
it("should make a quotation", function(done){
request.post({url:base_url + '/customer',
form: {
'name': 'erilcompa',
'vatNr': '22',
}},
function(error,response, body){
expect(response.statusCode).toEqual(200)
expect(body.name).toEqual('erilcompa')
customerID = body.name
console.log(response.statusCode)
done()
})
})
)}
这可能是显而易见的事情,但非常感谢任何帮助!!
你应该使用JSON.parse来解析正文,因为正文参数的类型是字符串。
var bodyObj = JSON.parse(body);
expect(bodyObj.name).toEqual('erilcompa');
请注意,您的服务器必须发送格式正确的 JSON 格式对象
{"name":"erilcompa"}
你的代码应该是这样的:
var request = require("request"); var base_url = "http://127.0.0.1:3000/api"
describe("Routes Suite", function(){
var customerID;
it("should make a quotation", function(done){
request.post({url:base_url + '/customer',
form: {
'name': 'erilcompa',
'vatNr': '22',
}
},
function(error,response, body){
expect(response.statusCode).toEqual(200);
var bodyObj = JSON.parse(body);
expect(bodyObj.name).toEqual('erilcompa');
customerID = body.name;
console.log(response.statusCode);
done();
})
})
)}