web-dev-qa-db-ja.com

Chai-オブジェクトの配列の値のテスト

結果のテストを、REST Mongoデータベースオブジェクトの配列を返すエンドポイントに設定しています。

_[{_id: 5, title: 'Blah', owner: 'Ted', description: 'something'...},
 {_id: 70, title: 'GGG', owner: 'Ted', description: 'something'...}...]
_

テストで確認したいのは、返される配列に、返される特定のタイトルが含まれていることです。 Chai/ Chai-Things を使用しても何も機能しないようです。 res.body.savedResults.should.include.something.that.equals({title: 'Blah'}) error outのようなものは、レコードオブジェクトにタイトルだけでなく他のキーと値が含まれていると仮定しています。

私がやりたいことをさせる方法はありますか?タイトルが配列内にあることを確認するだけで、他のデータ(IE _id)が何であるかは気にしません。

ありがとう

16
Jared Yach

これは私が通常テスト内で行うことです:

var result = query_result;

var members = [];
result.forEach(function(e){
    members.Push(e.title);
});

expect(members).to.have.members(['expected_title_1','expected_title_2']);

返される配列の順序がわかっている場合は、次のこともできます。

expect(result).to.have.deep.property('[0].title', 'expected_title_1');
expect(result).to.have.deep.property('[1].title', 'expected_title_2');
19
user2263572

前述のとおり、 here 次のコードは [email protected] および chai-things で動作します。このアプローチの自然な読みやすさが大好きです。

var chai = require('chai'),
    expect = chai.expect;

chai.use(require('chai-like'));
chai.use(require('chai-things')); // Don't swap these two

expect(data).to.be.an('array').that.contains.something.like({title: 'Blah'});
18
kub1x