Usa jasmine para probar Express.js

Estoy aprendiendo Node.js y Express framework. Soy un gran fan de jasmine. Así que quiero usar jasmine siempre que pueda, sin embargo, no puedo encontrar una buena manera de probar Express con jasmine. Por ejemplo, ¿cómo debo probar una ruta en app.js?

Si tengo esta ruta en app.js:

app.get('/', function(req, res) { ... }); 

¿Cómo puedo usar el jasmine para probarlo?

Jasmine-node facilita el uso de jasmine con node.js. Hay algunos ejemplos en su sitio. Otro ejemplo se puede encontrar en http://blog.drewolson.org/post/14684497867/

Deberías probar http://frisbyjs.com/

No he tenido la oportunidad de usarlo, pero como estaba buscando una solución al mismo problema, esto fue lo mejor que pude encontrar.

Desde Jasmine 2 es muy sencillo usar Jasmine en un entorno Node.js. Para probar las aplicaciones Express con él, recomiendo usar Jasmine en combinación con supertest .

Aquí es cómo se ve una prueba de este tipo:

proyecto / 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()); }); }); }); 

Algunos requisitos previos:

  1. Instale Jasmine v2 como dependencia de desarrollo en su proyecto: npm i -D [email protected]
  2. Instale supertest v3 como dependencia de desarrollo en su proyecto: npm i -D [email protected]
  3. Cree una configuración inicial de Jasmine utilizando jasmine init (Nota: primero debe instalar Jasmine globalmente si aún no lo ha hecho para ejecutar este comando)
  4. Cree una especificación que termine en “Spec.js” (como ServerSpec.js )

Así es como se ve una configuración de Jasmine:

proyecto / spec / support / jasmine.json

 { "helpers": [ "helpers/**/*.js" ], "random": false, "spec_dir": "spec", "spec_files": [ "**/*[sS]pec.js" ], "stopSpecOnExpectationFailure": false } 

Para ejecutar sus especificaciones (suites de prueba) simplemente agregue esto a sus scripts npm y ejecute la npm test (o simplemente npm t ):

  "scripts": { "test": "jasmine" }, 

Puedes usar supertest con jasmine pero solo necesitarás pasar los errores manualmente. Hace un tiempo se abrió un problema en el proyecto GitHub sobre esto.

https://github.com/jasmine/jasmine-npm/issues/31

Puedes intentar usar el supertesto como se prometió con Jasmine. Está funcionando para mí: https://github.com/WhoopInc/supertest-as-promised

Aquí hay unos ejemplos:

introduzca la descripción de la imagen aquí

introduzca la descripción de la imagen aquí

Tal vez podrías intentar supertest con mocha .

Aquí hay un ejemplo 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); }) })