io non riesco a ottenere il seguente test di integrazione di passare in un progetto espresso usando mocha, supertest, e should (e CoffeeScript).richieste di test che reindirizzano con la moka/Supertest nel nodo
Il test
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()
codice applicativo Rilevante
app.post '/sessions', (req, res) ->
req.flash 'info', "You are now logged in as #{req.body.user}"
res.redirect '/login'
La mancata
1) authentication POST /sessions success displays a flash:
AssertionError: expected 'Moved Temporarily. Redirecting to //127.0.0.1:3456/login' to include 'logged in'
Ovviamente, il codice di applicazione non fa nulla di utile. Sto solo cercando di far passare il test.
Mettere l'attesa (res.text.should.include('logged in')
) al di fuori della funzione di fine e all'interno della funzione expect
produce gli stessi risultati. Ho anche provato una variazione delle chiamate di funzione, ad esempio rimuovendo la chiamata .type('form')
e utilizzando .send(user: 'username', password: 'password')
anziché le due chiamate .field()
.
Se significa qualcosa, l'invio di una richiesta POST curl per la l'applicazione quando è in esecuzione in locale produce la stessa uscita (Moved Temporarily. Redirecting to //127.0.0.1:3456/login
)
Ho la sensazione che questo è un errore banale. Forse qualcosa che sto dimenticando nel codice dell'applicazione o nel codice di test.
Qualche suggerimento?
EDIT 1: E 'anche interessante notare che quando si fa clic sul pulsante di invio nel browser ottengo i risultati attesi (un messaggio flash).
EDIT 2: Ulteriori analisi mostra l'uscita di qualsiasi reindirizzamento risultati nel corpo Moved Temporarily. Redirecting to ...
risposta. Questo mi fa chiedere se c'è un problema nel modo in cui esporto l'app in app.js.
var express = require('express')
var app = express();
module.exports = app;
Si prega di dare un'occhiata: http://stackoverflow.com/questions/14001183/how-to-authenticate-supertest-requests-with-passport/37609721#37609721 –