如何使用 mocha 和 chai 断言验证嵌套响应对象
How do I validate the nested response object with mocha and chai assertion
我正在使用 chai 和 mocha 来测试我的 Node.js 之一。
我尝试使用的断言抛出错误。
Uncaught AssertionError: expected { Object (_events, _eventsCount, ...) } to have property 'address'
正在尝试使用断言验证以下响应对象和值:
Json 响应正文
{
"address": "value1",
"testware": "value2",
"status": false,
"linestatus": "online",
"optionalstatus": {
"line1": "offline",
"line2": "offline",
}
}
代码
describe('GET /getstatus Success Response (200)', () => {
it('Should return Status of line', (done) => {
chai.request(endpoint)
.get(getUrlWithQueryParamString({"url": "Passing get URL here", "method":"GET"}))
.end((err, res) => {
//console.log(res);
expect(res).to.have.status(200);
expect(res).to.have.property("body")
.and.have.property("address").equal("value1")
.and.have.property("testware").equal("value2")
.and.have.property("status").equal(false)
.and.have.property("linestatus").equal("online")
expect(res.body.optionalstatus.line1.to.include("offline"));
done();
});
});
res
有一个 body
属性 但它没有你期望的所有其他属性,那些在正文中找到。
尝试
expect(res).to.have.property("body");
expect(res.body).to.have.property("address").equal("value1")
.and.have.property("testware").equal("value2")
.and.have.property("status").equal(false)
.and.have.property("linestatus").equal("online")
expect(res.body.optionalstatus.line1.to.include("offline"));
我正在使用 chai 和 mocha 来测试我的 Node.js 之一。 我尝试使用的断言抛出错误。
Uncaught AssertionError: expected { Object (_events, _eventsCount, ...) } to have property 'address'
正在尝试使用断言验证以下响应对象和值:
Json 响应正文
{
"address": "value1",
"testware": "value2",
"status": false,
"linestatus": "online",
"optionalstatus": {
"line1": "offline",
"line2": "offline",
}
}
代码
describe('GET /getstatus Success Response (200)', () => {
it('Should return Status of line', (done) => {
chai.request(endpoint)
.get(getUrlWithQueryParamString({"url": "Passing get URL here", "method":"GET"}))
.end((err, res) => {
//console.log(res);
expect(res).to.have.status(200);
expect(res).to.have.property("body")
.and.have.property("address").equal("value1")
.and.have.property("testware").equal("value2")
.and.have.property("status").equal(false)
.and.have.property("linestatus").equal("online")
expect(res.body.optionalstatus.line1.to.include("offline"));
done();
});
});
res
有一个 body
属性 但它没有你期望的所有其他属性,那些在正文中找到。
尝试
expect(res).to.have.property("body");
expect(res.body).to.have.property("address").equal("value1")
.and.have.property("testware").equal("value2")
.and.have.property("status").equal(false)
.and.have.property("linestatus").equal("online")
expect(res.body.optionalstatus.line1.to.include("offline"));