[ EXPRESS] Response.body est undefined sur RENDER mais non sur SEND
Bonjour,
J'utilise le middleware EXPRESS pour pouvoir gérer les routes de mon site internet, et supertest pour les tests unitaires.
Regardez ces 2 bouts de code pour les cas suivants :
1) Requête envoyé avec RENDER à ma page "index.ejs" :
Code:
1 2 3 4
| router.get('/api/books/:id', function(req, res) {
res.status(200).render('index', {books: [new Book(0, 'Mon titre', true)]});
});
} |
2) Requête envoyé avec SEND :
Code:
1 2 3 4 5 6 7 8 9 10
| router.get('/api/books/:id', function(req, res) {
res.status(200).send(new Book(0, 'Mon titre', true));
});
function Book(id, title, done) {
this.id = id;
this.title = title;
this.status = status;
}
} |
Voici mon cas de test qui me pose problème :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| const
_ = require('lodash'),
{expect} = require('chai'),
request = require('supertest');
describe('Items', () => {
// Voici ma donnée en base
const books = [
{id: 0, title: 'Hello', status: false}
];
it('should get book number 0', (done) => {
request(app)
.get('/api/books/0')
.expect(200)
.end((err, response) => {
if (err) {
return done(err);
}
expect(response.body).to.be.deep.equal(books[0]);
done();
});
});
} |
Savez-vous pourquoi response.body est vide dans le cas 1 ({}) et valorisé dans le cas 2 {"done": false, "id": 0, "title": "Hello"} ? :idea: