2017-10-16 7 views
0

Je ne suis pas sûr pourquoi je continue à obtenir cette erreur. Chaque fois que je lance test NPM je reçois cette erreur complète:Supertest Erreur: attendu '[]' corps de la réponse, got '[""]'

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) 

Dans mon fichier app.js:

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

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

Toute aide serait grandement appréciée. Merci.

Répondre

0

Nous avons fini à l'aide

client.flushall();

à la place de

client.flushdb();

Il débusqué toutes les données existantes (bien que je ne suis pas t sûr comment il est entré là pour commencer). Après, je l'ai changé et ça marche bien.