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" :
2) Requête envoyé avec SEND :
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)]}); }); }
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 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; } }
Savez-vous pourquoi response.body est vide dans le cas 1 ({}) et valorisé dans le cas 2 {"done": false, "id": 0, "title": "Hello"} ?
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(); }); }); }![]()
Partager