AssertionError: expected { Object (__flags) } to have property '_id'

AssertionError: expected { Object (__flags) } to have property '_id'

我正在用 mocha 和 chai 测试我的代码。我的代码如下所示:

let mongoose = require("mongoose");
let Item = require('./../model/items.js');

let chai = require('chai');
let chaiHttp = require('chai-http');
let server = require('../app.js');
let should = chai.should();

chai.use(chaiHttp);

describe('Items', () => {
    beforeEach((done) => {
        Item.remove({}, (err) => {
            done();
        });
    });
    describe('/GET item', () => {
        it('it should GET perticular item', (done) => {
            chai.request("http://localhost:3000")
                .get('/foodtrucks/items?foodtruck_id=594f908042357813bc9d198d')
                .end((err, res) => {
                    res.body.should.have.property('status').eql('200');
                    res.body.should.have.property('message');
                    res.body.should.have.property('data').should.
                    be.a('object').should.have.property('_id');
                    done();
                });
        });
    });

});

我得到的回复是:

{
    "status": "200",
    "message": "Item List",
    "data": {
        "_id": "594f908042357813bc9d198d",
        "foodtruck_logo": "",
        "foodtruck_img": "",
        "foodtruck_tag": "best restaurent in the world",
        "foodtruck_name": "world in a box",
        "item_list": [
            {
                "_id": "594f9b4e8df2042df02d58aa",
                "item_img": "https://myWebsite.com/item_img-1499429774105.jpeg",
                "item_price": 5.99,
                "item_discount_price": 4.55,
                "item_category": "Chicken",
                "item_description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus volutpat urna nec placerat rhoncus.",
                "item_tag": "",
                "item_name": "chilli chicken",
                "no_of_likes": 1,
                "item_quantity_ordered": 1,
                "item_stock": 2,
                "item_illustrations": [
                    "spicy",
                    "non-veg"
                ]
            },
            .....
            ]
         }
}

res.body.should.have.property('data').should.be.a('object').should.have.property('_id') 行给我错误。有没有写错什么?

你不能嵌套 should 因为它修改 Object.prototype.

的方式

相反,使用这样的东西:

res.body.should.have.property('data')
        .which.is.an('object')
        .and.has.property('_id')