Should.js没有在数组中找到对象

时间:2013-08-01 05:00:34

标签: mocha should.js

我正在编写测试来验证异步进程写入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();
                });

        });

1 个答案:

答案 0 :(得分:0)

我对should.js不是很熟悉,但我认为 应该使用includeEql,因为您要验证是否存在等于level2的对象数组,而不是level2本身就在那里。来自docs

  

包括(OBJ)

     

断言给定的obj是通过indexOf()存在的,所以这适用于   字符串,数组或实现indexOf的自定义对象。


  

includeEql(OBJ)

     

断言在数组中存在与给定obj相等的对象: