声明响应正文是空的

时间:2014-09-08 05:55:21

标签: node.js supertest should.js

我试图断言响应主体是否为空,但是出现了错误:

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

出了什么问题?我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

.empty中的{p> 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 }
>