J'apprends Node.js et le framework Express. Je suis un grand fan de jasmin. Donc, je veux utiliser du jasmin chaque fois que je peux, cependant, je ne trouve pas un bon moyen de tester Express avec jasmine. Par exemple, comment devrais-je tester un itinéraire dans app.js?
Si j'ai cette route dans app.js:
app.get('/', function(req, res) {
...
});
Comment puis-je utiliser du jasmin pour le tester?
Jasmine-node facilite l'utilisation de jasmine avec node.js. Il y a quelques exemples sur leur site. Un autre exemple peut être trouvé de http://blog.drewolson.org/post/14684497867/ web.archive.org
Vous devriez essayer http://frisbyjs.com/
Je n'ai pas eu l'occasion de l'utiliser, mais comme je cherchais une solution au même problème, c'était le meilleur que je pouvais trouver.
Depuis Jasmine 2, il est très simple d’utiliser Jasmine dans un environnement Node.js. Pour tester les applications express , il est recommandé d’utiliser Jasmine en combinaison avec supertest .
Voici à quoi ressemble un tel test:
projet/spec/ServerSpec.json
const request = require('supertest');
const app = require('../app');
describe('Server', () => {
describe('REST API v1', () => {
it('returns a JSON payload', (done) => {
request(app)
.get('/rest/service/v1/categories')
.expect(200)
.expect('Content-Type', 'application/json; charset=utf-8')
.end((error) => (error) ? done.fail(error) : done());
});
});
});
Quelques prérequis:
npm i -D jasmine@2
npm i -D supertest@3
jasmine init
(Remarque: vous devez d'abord installer Jasmine globalement si vous n'avez pas encore exécuté cette commande.)ServerSpec.js
)Voici à quoi ressemble une configuration Jasmine:
projet/spec/support/jasmine.json
{
"helpers": [
"helpers/**/*.js"
],
"random": false,
"spec_dir": "spec",
"spec_files": [
"**/*[sS]pec.js"
],
"stopSpecOnExpectationFailure": false
}
Pour exécuter vos spécifications (suites de tests), ajoutez simplement ceci à vos scripts npm } et exécutez npm test
(ou simplement npm t
):
"scripts": {
"test": "jasmine"
},
Vous pouvez utiliser Supertest avec Jasmin, mais vous aurez juste besoin de transmettre manuellement les erreurs. Un problème concernant le projet GitHub a été ouvert à ce sujet il y a un moment.
Vous pouvez essayer d'utiliser Supertest comme promis avec Jasmine. Cela fonctionne pour moi: https://github.com/WhoopInc/supertest-as-promised
Voici quelques exemples:
Peut-être que vous pourriez essayer supertest avec moka .
Voici un exemple simple:
var request = require('supertest')
, express = require('express');
var app = express();
app.get('/user', function(req, res){
res.send(200, { name: 'toto' });
});
describe('GET /user', function(){
it('should respond with json', function(done){
request(app)
.get('/user')
.set('Accept', 'application/json')
.expect('Content-Type', 'json')
.expect(200, done);
})
})