1

非同期プロセスが mongo に書き込んだ内容を検証するテストを書いていますが、レコードが含まれていることを確認する should.include に問題があります。簡単にするために、私のプロジェクションには 1 つのフィールド (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にはあまり詳しくありませんが、 level2自体がそこにあるのではなく、等しいオブジェクトが配列に存在することを確認したいので、includeEqlを使用する必要があると思います。彼らのドキュメントから:level2

インクルード (obj)

指定された obj が indexOf() を介して存在することをアサートするため、これは文字列、配列、または indexOf を実装するカスタム オブジェクトに対して機能します。


includeEql(obj)

指定された obj と等しいオブジェクトが配列に存在することをアサートします。

于 2013-08-01T05:11:47.713 に答える