javascript - Chai - 测试对象数组中的值

标签 javascript arrays mocha.js chai

我正在将我的测试结果设置到一个 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)。

谢谢

最佳答案

这是我通常在测试中所做的:

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');

关于javascript - Chai - 测试对象数组中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41726208/

相关文章:

php - 将字符串分解为多个单词

ruby-on-rails - 使用 mocha 打桩助手

javascript - 跨域 AJAX 查询

javascript - jQuery/JavaScript : tidy html

javascript - lodash/js : Filtering values within an object based on regular expressions and getting the highest by comparison

javascript - 如何获取填充有来自 firebase 的数据的表

Java二维数组定义

c - 数组名是指针吗?

requirejs - 设置 karma、chai、requirejs、chai-jquery

javascript - 将 ES6 类与 ES5 代码一起使用