2016-06-27 2 views
0

Ich versuche, einen einfachen Test für meinen Controller zu schreiben. Ich benutze diese documentation von Sails.jsIntegrationTest mit SuperTest erwartet 302 bekommt 200 in Sails.js Anwendung

Die UserController.test.js:

var request = require('supertest'); 

describe('UserController', function() { 

    describe('#login()', function() { 
     it('should redirect to/indexpage', function (done) { 
      request(sails.hooks.http.app) 
       .post('/login') 
       .send({name: 'Stifflers', password: 'Mom'}) 
       .expect(302) 
       .expect('Location', '/', done); 
     }); 
    }); 

}); 

Der entsprechende Code aus AuthController.js:

... 
    // is authenticated 
     res.writeHead(302, { 
     'Location': "/" 
     }); 

     res.end(); 
... 

ich den Test mit npm Test laufen und bekomme diesen Fehler:

Error: expected 302 "Found", got 200 "OK"

Wenn ich ch ange der .expect (302) in meinem Test zu .expect (200) ich den nächsten Fehler:

Error: expected "Location" header field

habe ich versucht, es die gleiche wie in der Dokumentation zu tun, warum nicht es funktioniert?

+0

Warum verwenden Sie '' 'res.redirect (302, '/')' ''? – Bonanza

+0

@ Bonanza Das ist egal, wir bekommen den gleichen Effekt. 1: http://expressjs.com/en/api.html#res.redirect 2: https://nodejs.org/api/http.html#http_response_writehead_statuscode_statusmessage_headers – Suisse

+0

Haben Sie bestätigt, dass die richtige Route tatsächlich ausgeführt wird? Es scheint nicht zu sein. –

Antwort

0

rufen Sie mich dumm ... der Fehler wurde durch die falschen Post Variablen verursacht, die ich gesendet wurde.

  .send({email: '[email protected]', password: 'test'}) 

Ich hatte E-Mail nicht nennen zu senden! Jedes Mal habe ich es mit Postboten mit "E-Mail" getestet, und in meinem Code hatte ich "Name".

Ich sah, es gibt viele ähnliche Fragen zu SO und anderswo; Vielleicht kann meine Schuld ihnen helfen, ihren eigenen Code besser zu überprüfen.

Verwandte Themen