утверждение, что тело ответа пусто

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

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('{}');

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


person hellboy    schedule 08.09.2014    source источник
comment
Как я могу утверждать, что тело пусто, т.е. sendet с res.send()   -  person hellboy    schedule 17.09.2014


Ответы (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 }
> 
person den bardadym    schedule 08.09.2014
comment
res.type = application/json, res.text = {}, res.body = Object, res.should.be.a.json передан - person hellboy; 08.09.2014
comment
@hellboy я добавил пример того, что в REPL это работает. Итак, я предполагаю, что с вашим body что-то не так (я использовал последнюю версию should.js 4.0.4). - person den bardadym; 08.09.2014