如何检查响应的主体在Mocha中的单个断言中是否具有某些属性

时间:2017-07-21 17:02:20

标签: javascript testing mocha

我正在测试网络应用程序'使用Mocha的Node.js中的路由器和我想知道是否有一种方法可以检查一个对象是否具有某些属性的单个断言。

现在,这就是我正在做的事情:

describe('GET /categories', function () {
        it('should respond with 200 and return a list of categories', function (done) {
            request.get('/categories')
                .set('Authorization', 'Basic ' + new Buffer(tokenLogin).toString('base64'))
                .expect('Content-Type', /json/)
                .expect(200)
                .end(function (err, res) {
                    if (err) return done(err);
                    expect(res.body).to.be.an.instanceof(Array);
                    expect(res.body).to.have.lengthOf.above(0);
                    expect(res.body[0]).to.have.property('id');
                    expect(res.body[0]).to.have.property('category');
                    expect(res.body[0]).to.have.property('tenant');
                    done();
                });
        });
});

我已经在摩卡的文档中搜索过,但我还没能找到我想要的东西。

1 个答案:

答案 0 :(得分:1)

我假设你正在使用chai

expect(res.body)
  .to.be.an.instanceof(Array)
  .and.to.have.property(0)
  .that.includes.all.keys([ 'id', 'category', 'tenant' ])

或者:

expect(res)
  .to.have.nested.property('body[0]')
  .that.includes.all.keys([ 'id', 'category', 'tenant' ])

(虽然后者并没有真正检查res.body实际上是否是一个数组)