我得到了
TypeError: Cannot read property 'status' of undefined在打开gzipResponse的情况下,尝试使用supertest将文件上传到简单的restify服务器时。
版本等:
$ npm list | grep 'super\|mocha\|restify'
├─┬ mocha@2.4.5
├─┬ restify@4.0.4
└─┬ supertest@1.2.0
└─┬ superagent@1.8.3
$ node -v
v5.5.0服务器:
const restify = require('restify');
const server = restify.createServer();
server.use(restify.gzipResponse());
server.put('image', (req, res) => {
res.send(200);
});
module.exports = server;测试:
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);
});
});禁用gzipResponse时,测试将通过,如果未附加任何文件,测试也将通过。
我不确定这个问题是否与superagent/supertest相关,或者问题是否出在restify/gzip上。任何帮助都是非常感谢的。
发布于 2016-04-14 06:32:48
我认为这可能是您的项目的服务器配置问题。我认为supertest和superagent可以很好地处理gzip响应。
这是我写的一个mocha测试片段,它展示了它的工作方式。当然,这是在使用express服务器,但它仍然启用了gzip压缩。
var express = require('express');
var supertest = require('supertest');
var compression = require('compression');
var path = require('path');
var app = express();
app.use(compression());
app.get('/test', function(req, res) {
res.sendStatus(200);
});
app.put('/image', function(req, res) {
res.sendStatus(200);
});
describe('Test gzip with file upload', function(){
it('Get a test page', function(done) {
supertest(app)
.get('/test')
.expect(200)
.end(function(err, res){
if (err) return done(err);
done();
});
});
it('Upload an image', function(done) {
supertest(app)
.put('/image')
.attach('image', path.join(__dirname, 'pc.png'))
.expect(200)
.end(function(err, res){
if (err) return done(err);
done();
});
});
});尽管我没怎么用过restify,但我只是创建了一个使用restify作为服务器的快速示例,并且使用supertest的测试仍然通过。在上面的示例中,是否需要添加server.listen调用?
var supertest = require('supertest');
var restify = require('restify');
var path = require('path');
var server = restify.createServer();
server.use(restify.gzipResponse());
server.get('/test', function(req, res) {
res.send(200);
});
server.put('/image', function(req, res) {
res.send(200);
});
server.listen(3000, function() {
console.log('%s listening at %s', server.name, server.url);
});
describe('Test gzip with file upload', function(){
it('Get a test page', function(done) {
supertest(server)
.get('/test')
.expect(200)
.end(function(err, res){
if (err) return done(err);
done();
});
});
it('Upload an image', function(done) {
supertest(server)
.put('/image')
.attach('image', path.join(__dirname, 'neo.jpg'))
.expect(200)
.end(function(err, res){
if (err) return done(err);
done();
});
});
});https://stackoverflow.com/questions/36306505
复制相似问题