2014-09-08 15 views
0

Я пытаюсь утверждать, если тело ответа пусто, но получил сообщение об ошибке:утверждая тело ответа пусто

var api = supertest(TEST_URL); 
... 
api.get('..') 
    .expect('Content-Type', /json/) 
    .end(function (err, res) { 
     if (err) { 
     return done(err); 
     } 

     res.should.have.status(200); 

     // Uncaught AssertionError: expected {} to have a property 'length' 
     // res.body.should.empty; 

     // Workaround should be used 
     res.text.should.eql('{}'); 

Что случилось? Как я могу исправить эту проблему?

+0

Как я могу утверждать, что тело является пустым, то есть sendet с '' 'res.send()' '' – hellboy

ответ

1

.empty утверждение в should.js проверка на строку, аргументы, массивы просто свойство длины. Поэтому, если он выскажет утверждение о недостающей длине - ваше тело не выглядит синтаксическим для json (вам нужно убедиться, что вы вернетесь правильно Content-Type, например application/json).

Для объектов да .empty будет проверять отсутствие каких-либо перечислимых свойств.

$ node 
> var should = require('should') 
undefined 
> var res = { body: {} }; 
undefined 
> res.body.should.be.empty 
{ obj: {}, 
    params: { operator: 'to be empty' }, 
    negate: false } 
> 
+0

res.type = "приложения/JSON", res.text = "{}", Рез .body = Object, res.should.be.a.json прошел – hellboy

+0

@hellboy Я добавил пример, что в REPL он работает. Поэтому я предполагаю, что что-то не так с вашим «телом» (я использовал последний файл should.js 4.0.4). –

Смежные вопросы