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.