2017-10-27 6 views
0

Chaiとの統合テスト中に問題が発生しています。私は配列にいくつかのキーを含むオブジェクトが含まれていることを確認したい。この場合、ユーザにアドレスを追加しています。ユーザが返されたときに、アドレス配列には最初に渡されたフィールドが含まれていますが、MongoDBによって生成されたObjectIdを確認する必要はありません。私は配列操作のためにchai thingsを使用しています。Chaiは、配列にキーを含むオブジェクトが含まれていることを確認します

私がチェックしています要素は、以下のアサーションの形でインデックス0であることを知ったとき、私は実用的なソリューションを持っている:私が欲しいもの

expect(response.body.addresses[0]).to.deep.include({ 
       text: '123, fake street', 
       loc: { 
        type: 'Point', 
        coordinates: [0, 0] 
       } 
}); 

する配列が含まれていることを主張するchai-thingsを利用することです上記のアサーションと同じ要件を満たすオブジェクト

expect(response.body.addresses).to.contain.something.that.deep.includes({ 
        text: '123, fake street', 
        loc: { 
         type: 'Point', 
         coordinates: [0, 0] 
        } 
}); 

しかし、これはで失敗します:私が思い付くことができ、最も近いソリューションですAssertionError: expected { Object (text, _id, ...) } to deep include { text: '123, fake street', loc: { type: 'Point', coordinates: [ 0, 0 ] } }

配列内のオブジェクトの位置に依存せずにこれを達成する方法はありますか?

答えて

0

これにもchai-thingsを使ってみましたが、それは正しくできませんでした。テストのセットアップでchai-subset

を使用して終了:

chai.use(require('chai-subset'))

とテスト

expect(response.body.addresses).to.containSubset([{ 
    text: '123, fake street', 
    loc: { 
    type: 'Point', 
    coordinates: [0, 0] 
    } 
}]) 
関連する問題