简体   繁体   中英

Supertest Error: expected '[]' response body, got '[“”]'

I'm not sure why I keep getting this error. Whenever I run npm test I get this full error:

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)

In my app.js file:

 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 file:

 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); }); }); 

Any help would be greatly appreciated. Thanks.

Ended up using

 client.flushall(); 

in place of

 client.flushdb(); 

It flushed out all existing data (though I'm not sure how it got in there to begin with). Afterwards I changed it back and it's working fine.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM