2017-10-16 8 views
0

왜이 오류가 계속 발생하는지 잘 모르겠습니다. 내 app.js 파일에서Supertest 오류 : '[]'응답 본문에 '[ ""]'이 있습니다.

1) Listing subscriptions on /subscriptions 
    Returns initial subscriptions: 
Error: expected '[]' response body, got '[""]' 
    at error (node_modules\supertest\lib\test.js:299:13) 
    at Test._assertBody (node_modules\supertest\lib\test.js:216:14) 
    at Test._assertFunction (node_modules\supertest\lib\test.js:281:11) 
    at Test.assert (node_modules\supertest\lib\test.js:171:18) 
    at Server.assert (node_modules\supertest\lib\test.js:131:12) 
    at emitCloseNT (net.js:1543:8) 
    at _combinedTickCallback (internal/process/next_tick.js:71:11) 
    at process._tickCallback (internal/process/next_tick.js:98:9) 

: 나는 NPM 테스트를 실행할 때마다 나는이 전체 오류가

var express = require('express'); 
 
var app = express(); 
 
var bodyParser = require('body-parser'); 
 
var urlencode = bodyParser.urlencoded({ extended: false }); 
 

 
app.use(express.static('public')); 
 

 
var redis = require('redis'); 
 
if (process.env.REDISTOGO_URL) { 
 
    var rtg = require('url').parse(process.env.REDISTOGO_URL); 
 
    var client = redis.createClient(rtg.port, rtg.hostname); 
 
    client.auth(rtg.auth.split(":")[1]); 
 
} else { 
 
    var client = redis.createClient(); 
 
    client.select((process.env.NODE_ENV || 'development').length); 
 
} 
 

 
app.get('/subscriptions', function (req, res) { 
 
    client.hkeys('subscriptions', function (err, names) { 
 
     if (err) throw err; 
 
     res.json(names); 
 
    }); 
 
}); 
 

 

 
app.post('/subscriptions', urlencode, function (req, res) { 
 
var newSubscription = req.body; 
 
if(!newSubscription.name || !newSubscription.date) { 
 
    res.sendStatus(400); 
 
    return false; 
 
} 
 
client.hset('subscriptions', newSubscription.name, newSubscription.date, 
 
function (err) { 
 
    if (err) throw err; 
 
    res.status(201).json(newSubscription.name); 
 
}); 
 
});

test.js 파일 :

var request = require('supertest'); 
 
var app = require('./app'); 
 

 
var redis = require('redis'); 
 
var client = redis.createClient(); 
 
client.select('test'.length); 
 
client.flushdb(); 
 

 
describe('Requests to the root path', function() { 
 

 
    it('Returns a 200 status code', function (done) { 
 

 
     request(app) 
 
      .get('/') 
 
      .expect(200, done); 
 
    }); 
 
    it('Returns a HTML format', function(done) { 
 
     
 
     request(app) 
 
      .get('/') 
 
      .expect('Content-Type', /html/, done); 
 
    }); 
 
    it('Returns an index file with Subscriptions', function(done) { 
 

 
     request(app) 
 
      .get('/') 
 
      .expect(/subscriptions/i, done); 
 
    }); 
 
}); 
 

 
describe('Listing subscriptions on /subscriptions', function() { 
 

 
    it('Returns 200 status code', function (done) { 
 

 
     request(app) 
 
      .get('/subscriptions') 
 
      .expect(200, done); 
 

 
    }); 
 
    it('Returns JSON format', function (done) { 
 

 
     request(app) 
 
      .get('/subscriptions') 
 
      .expect('Content-Type', /json/, done); 
 
    }); 
 

 
    it('Returns initial subscriptions', function (done) { 
 

 
     request(app) 
 
      .get('/subscriptions') 
 
      .expect(JSON.stringify([]), done); 
 
    }); 
 
});

도움이 되었다면 크게 감사하겠습니다. 감사.

답변

0

내가 더 해요하지만 (

client.flushdb();

그것은 기존의 모든 데이터를 플러시 대신에

client.flushall();

을 사용하지 않고 종료 됨 그것은 어떻게 거기에 처음부터 들어 갔는지 확실하지 않음). 나중에 다시 변경했고 제대로 작동합니다.