Parece que no puedo obtener la siguiente prueba de integración para pasar en un proyecto express usando mocha, supertest y should (y coffeescript).Pruebas de solicitudes que redireccionan con mocha/supertest en el nodo
La prueba
should = require('should')
request = require('supertest')
app = require('../../app')
describe 'authentication', ->
describe 'POST /sessions', ->
describe 'success', (done) ->
it 'displays a flash', (done) ->
request(app)
.post('/sessions')
.type('form')
.field('user', 'username')
.field('password', 'password')
.end (err, res) ->
res.text.should.include('logged in')
done()
código de la aplicación pertinente
app.post '/sessions', (req, res) ->
req.flash 'info', "You are now logged in as #{req.body.user}"
res.redirect '/login'
La falta
1) authentication POST /sessions success displays a flash:
AssertionError: expected 'Moved Temporarily. Redirecting to //127.0.0.1:3456/login' to include 'logged in'
Obviamente, el código de la aplicación no hace nada útil. Solo intento que la prueba pase.
Poner la expectativa (res.text.should.include('logged in')
) fuera de la función final y dentro de la función expect
produce los mismos resultados. También intenté una variación de las llamadas a funciones, por ejemplo, eliminando la llamada .type('form')
y usando .send(user: 'username', password: 'password')
en lugar de las dos llamadas .field()
.
Si sirve de algo, el envío de una solicitud POST rizo a la de la aplicación cuando se está ejecutando localmente produce la misma salida (Moved Temporarily. Redirecting to //127.0.0.1:3456/login
)
Tengo la sensación de que esto es un error trivial. Posiblemente algo que estoy olvidando en el código de la aplicación o el código de prueba.
¿Alguna sugerencia?
EDITAR 1: También vale la pena señalar que al hacer clic en el botón Enviar en el navegador obtengo los resultados esperados (un mensaje flash).
EDIT 2: investigación más a fondo muestra la salida del cualquier redirigir resultados en el cuerpo Moved Temporarily. Redirecting to ...
respuesta. Esto me hace preguntarme si hay un problema en la forma en que estoy exportando la aplicación en app.js.
var express = require('express')
var app = express();
module.exports = app;
Por favor, eche un vistazo: http://stackoverflow.com/questions/14001183/how-to-authenticate-supertest-requests-with-passport/37609721#37609721 –