1

我正在编写测试以验证异步进程已写入 mongo 的内容,并且我遇到了 should.include 问题以验证是否包含记录。为简化起见,我的投影仅包含一个字段 (ag_status),并且我收到来自 should 的以下错误:

  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();
                });

        });
4

1 回答 1

0

我对 should.js 不是很熟悉,但我认为您应该使用includeEql,因为您想验证level2数组中是否存在等于的对象,而不是 level2 本身是否存在。从他们的文档中

包括(对象)

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


包括Eql(obj)

断言等于给定 obj 的对象存在于 Array 中:

于 2013-08-01T05:11:47.713 回答