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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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"} ?