AssertionError:期望{Object(__flags)}具有属性'_id'

时间:2017-07-21 07:40:08

标签: node.js mocha chai

我正在使用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')行给了我错误。有什么错写的吗?

1 个答案:

答案 0 :(得分:2)

由于修改should的方式,您无法嵌套Object.prototype

相反,请使用以下内容:

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