如何使用 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"));