I don't understand why these are failing the variations I have tried are:
response.body.should.be.a('object').and.to.have.property('id');
and
response.body.should.have.property('id');
I get the error Uncaught AssertionError: expected { Object (starss) } to have property 'id'
here is my JSON payload from Postman
{
"starss": {
"id": 1,
"name": "1",
"discovery_name": "1",
"imageFileName": "test1.jpg",
"datediscovered": "2001-01-01T00:00:00.000Z",
"colour": "1",
"mass": "1.000",
"dfe": "1.000",
"galaxy_origin": "1",
"star_categories_id": 1,
"createdAt": "2021-12-03",
"updatedAt": "2021-12-12"
}
}
here are my Mocha tests
describe('GET/stars/:id',() => {
it("it should get one star by ID", (done) =>
{
// Uncaught AssertionError: expected { Object (starss) } to be a starss
// star GET by ID
const starId = 1;
chai.request(server)
.get("/stars/" + starId )
.end((err,response)=>{
response.should.have.status(200);
response.body.should.be.a('object');
response.body.should.be.a('object').and.to.have.property('id');
response.body.should.have.property('id');
// response.body.should.have.property('name');
// response.body.should.have.property('discovery_name');
// response.body.should.have.property('imageFileName');
// response.body.should.have.property('datediscovered');
// response.body.should.have.property('colour');
// response.body.should.have.property('mass');
// response.body.should.have.property('dfe');
// response.body.should.have.property('galaxy_origin');
// response.body.should.have.property('star_categories_id');
done();
});
});
The reason why it's not finding the id property is because the response body only has the key of starss. You need to go into the starss object to access its keys. I used to mocha/chai codepen to verify the result:
The URL for the codepen is here: https://codepen.io/alexpyzhianov/pen/KVbeyO