我正在编写测试来验证异步进程写入mongo的内容,并且我遇到了问题,包括验证是否包含记录。为了简化它,我的投影只包含一个字段(ag_status),我从应该收到以下错误:
1) Agriculture record should return at least one record with ag_status to true:
Uncaught AssertionError: expected [ { ag_status: true },
{ ag_status: true },
{ ag_status: true },
{ ag_status: true },
{ ag_status: true },
{ ag_status: true } ] to include an object equal to { ag_status: true }
以下是调用should.include的代码部分。我已经尝试过chai,chai-fuzzy和chai-things,但它们都没有工作(并且没有给出详细的消息)所以我现在被卡住了。非常感谢任何帮助。
it('Agriculture record should return at least one record with ag_status to true', function(done){
MobAgriculture.model.find({ time_id: "AYearAgo" }, {_id: 0, ag_status: 1 }, function(err, result) {
should.not.exist(err);
should.exist(result);
result.should.have.length(6);
console.log(result);
var level2 = { "ag_status" : true };
result.should.include(level2);
done();
});
});
答案 0 :(得分:0)
我对should.js不是很熟悉,但我认为 应该使用includeEql,因为您要验证是否存在等于level2
的对象数组,而不是level2本身就在那里。来自docs:
包括(OBJ)
断言给定的obj是通过indexOf()存在的,所以这适用于 字符串,数组或实现indexOf的自定义对象。
includeEql(OBJ)
断言在数组中存在与给定obj相等的对象: