当前位置:  开发笔记 > 编程语言 > 正文

Chai - 测试对象数组中的值

如何解决《Chai-测试对象数组中的值》经验,为你挑选了2个好方法。

我正在将结果的测试设置到REST端点,该端点返回一组Mongo数据库对象.

[{_id: 5, title: 'Blah', owner: 'Ted', description: 'something'...},
 {_id: 70, title: 'GGG', owner: 'Ted', description: 'something'...}...]

我希望我的测试验证的是,在返回数组中,它包含应该返回的特定标题.我没有用Chai/Chai-Things做什么似乎都有用.事情是这样res.body.savedResults.should.include.something.that.equals({title: 'Blah'})的错误了,我假设,因为记录对象包含其他键和值除了刚才称号.

有没有办法让它做我想要的?我只需要验证标题是否在数组中,而不关心其他数据可能是什么(IE _id).

谢谢



1> user2263572..:

这是我在测试中通常做的事情.

var result = query_result;

var members = [];
result.forEach(function(e){
    members.push(e.title);
});

expect(members).to.have.members(['expected_title_1','expected_title_2']);

如果你知道返回数组的顺序,你也可以这样做:

expect(result).to.have.deep.property('[0].title', 'expected_title_1');
expect(result).to.have.deep.property('[1].title', 'expected_title_2');



2> kub1x..:

如下所述,下面的代码现在使用chai-like@0.2.14和chai-things.我只是喜欢这种方法的自然可读性.

var chai = require('chai'),
    expect = chai.expect;

chai.use(require('chai-like'));
chai.use(require('chai-things')); // Don't swap these two

expect(data).to.be.an('array').that.contains.something.like({title: 'Blah'});

推荐阅读
小妖694_807
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有