Express und Mungo.Supertest: Kann Header nicht festlegen, nachdem sie gesendet werden
Zum Testen verwende ich Supertest, Mokka und Mockgoose.
Wenn ich die Auth-Token für zwei aufeinanderfolgende Tests einzustellen, schlägt die zweiten Can't set headers after they are sent.
Den Testfall zu werfen ist unten gezeigt.
var chai = require('chai'),
expect = chai.expect,
server = null,
request = require('supertest'),
mockgoose = require('mockgoose'),
mongoose = require('mongoose');
describe('Organization',() => {
var token = 'success_token',
orgName = 'default_org_name',
users,
organization;
before((done) => {
mockgoose(mongoose);
server = request(require('../../server/server.js'));
});
it('should get list of organizations for a proper user', (done) => {
server
.get('/api/organization/')
.set({token : token})
.expect(200)
.end((err, res) => {
if (err) return done(err);
expect(res.body.length).to.equal(1);
expect(res.body[0].name).to.equal(orgName);
done();
});
});
it('should send a 500 response for a incorrect user', (done) => {
var errorToken = 'error token';
server
.get('/api/organization/')
.set({token : errorToken})
.expect(500)
.end((err, res) => {
if (err) return done(err);
done();
});
});
after((done) => {
mockgoose.reset();
done();
});
});
Der erste Testfall besteht, aber der zweite Testfall schlägt fehl. Es wirft einen Fehler
Error: Can't set headers after they are sent.
at ServerResponse.OutgoingMessage.setHeader (_http_outgoing.js:346:11)
at ServerResponse.header (/home/tricon/aniket/dev/publab/triconpublish_api/node_modules/express/lib/response.js:718:10)
at ServerResponse.send (/home/tricon/aniket/dev/publab/triconpublish_api/node_modules/express/lib/response.js:163:12)
at ServerResponse.json (/home/tricon/aniket/dev/publab/triconpublish_api/node_modules/express/lib/response.js:249:15)
at ServerResponse.send (/home/tricon/aniket/dev/publab/triconpublish_api/node_modules/express/lib/response.js:151:21)
at /home/tricon/aniket/dev/publab/triconpublish_api/server/filter.js:9:1744
at Query.<anonymous> (/home/tricon/aniket/dev/publab/triconpublish_api/node_modules/mongoose/lib/query.js:2169:28)
at /home/tricon/aniket/dev/publab/triconpublish_api/node_modules/kareem/index.js:177:19
at /home/tricon/aniket/dev/publab/triconpublish_api/node_modules/kareem/index.js:109:16
at _combinedTickCallback (node.js:370:9)
at process._tickDomainCallback (node.js:425:11)
ich den Grund nicht bekommen.
Sie können feststellen, dass ich zwei verschiedene Token setze. Eine für das Erfolgsszenario und eine für das Fehlerszenario. Wenn ich im zweiten Testfall dasselbe Erfolgstoken setze, wird dieser Fehler nicht ausgelöst.
Bitte Hilfe !!!