umleiten Ich kann nicht scheinen, den folgenden Integrationstest zu erhalten, um in einem Express-Projekt mit mocha, supertest und should (und coffeescript) zu übergeben.Testen von Anforderungen, die mit Mocha/Supertest in Knoten
Der 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()
Relevant Anwendungscode
app.post '/sessions', (req, res) ->
req.flash 'info', "You are now logged in as #{req.body.user}"
res.redirect '/login'
Failure
1) authentication POST /sessions success displays a flash:
AssertionError: expected 'Moved Temporarily. Redirecting to //127.0.0.1:3456/login' to include 'logged in'
Offensichtlich ist, dass der Anwendungscode nicht etwas Sinnvolles tun. Ich versuche nur, den Test zu bestehen.
Das Setzen der Erwartung (res.text.should.include('logged in')
) außerhalb der Endfunktion und innerhalb der expect
-Funktion führt zu denselben Ergebnissen. Ich habe auch eine Variante der Funktionsaufrufe versucht, zum Beispiel den .type('form')
Anruf zu entfernen und .send(user: 'username', password: 'password')
anstelle der zwei .field()
Aufrufe zu verwenden.
Wenn es etwas bedeutet, eine Locke POST-Anfrage an den App zu senden, wenn es läuft lokal liefert die gleiche Leistung (Moved Temporarily. Redirecting to //127.0.0.1:3456/login
)
Ich habe das Gefühl, das ist ein trivialer Fehler. Möglicherweise etwas, das ich im Anwendungscode oder im Testcode vergesse.
Irgendwelche Vorschläge?
EDIT 1: Es ist auch erwähnenswert, dass, wenn ich den Absenden-Button im Browser klicke, ich die erwarteten Ergebnisse (eine Flash-Nachricht) bekomme.
EDIT 2: Weitere Untersuchungen zeigt die Ausgabe des jede umlenken Ergebnisse im Moved Temporarily. Redirecting to ...
Antworttext. Das lässt mich fragen, ob es ein Problem in der Art gibt, wie ich die App in app.js exportiere.
Bitte werfen Sie einen Blick: http://StackOverflow.com/Questions/14001183/How-to-Authenticate-Supertest-Requests-with-Passport/37609721#37609721 –