IchSupertest + Restify gzipResponse Datei-Upload
bekommenTypeError: Cannot read property 'status' of undefined
, wenn eine Datei mit Supertest auf einen einfachen restify Server hochzuladen versuchen, mit gzipResponse
eingeschaltet.
Versionen etc:
$ npm list | grep 'super\|mocha\|restify'
├─┬ [email protected]
├─┬ [email protected]
└─┬ [email protected]
└─┬ [email protected]
$ node -v
v5.5.0
Der Server:
const restify = require('restify');
const server = restify.createServer();
server.use(restify.gzipResponse());
server.put('image', (req, res) => {
res.send(200);
});
module.exports = server;
Der Test:
const request = require('supertest');
const server = require('./index');
const path = require('path');
describe('insertImage', function() {
it('should send an image', done => {
request(server)
.put('/image')
.attach('image', path.join(__dirname, 'pc.png'))
.expect(200, done);
});
});
Der Test wird passieren, wenn gzipResponse
deaktiviert ist, und es wird auch passieren, wenn kein Datei ist angehängt.
Ich bin mir nicht sicher, ob dieses Problem superagent/superestest ist, oder ob das Problem mit restify/gzip liegt. Jede Hilfe wird geschätzt.
Ja, es ist seltsam, ich weiß. Es scheint wirklich ein Problem mit der spezifischen Restify + Kompression + Supertest Combo zu sein. Das Hochladen einer Datei mit curl funktioniert einwandfrei ... – Edo
@Edo Ich habe gerade die Antwort aktualisiert, um ein Beispiel mit restify als API-Server anzuzeigen. Ich benutze die gleichen Deps einschließlich Knoten 5.5. Benötigen Sie einen server.listen Anruf? – Mikelax
Das Ausführen Ihrer Tests schlägt für mich fehl, weil es so aussieht, als hätten Sie die 'done' Argumente in Ihren' it' Tests vergessen. Ich habe das Argument "done" hinzugefügt und die Tests mit dem Aufruf "server.listen" ausgeführt. Der Upload-Test ist jedoch weiterhin fehlgeschlagen. Sehr eigenartig. – Edo