2017-08-22 3 views
1

与えられた引数を持つオブジェクトのインスタンスを返す静的メソッドを単体テストしようとしています。私は除外したいcreatedAtのようなフィールドが自動的に設定されているので、このメソッドに渡されるプロパティのテストのみを行いたいと思います。モカ:2つのオブジェクトを比較し、createdAtのようなフィールドを除外します

expect().to.have.property()のようなものを使用して個々のプロパティに対してテストする必要がありますか、または1行の解決策がありますか?

http://chaijs.com/api/bdd/#method_property

+0

つをすべて 'expected'オブジェクトフィールドのリストを取得し、すべてのactual'オブジェクト'から削除することです'expectedFields'が必要です。その後、それらを主張する。 – alexmac

+0

@alexmacいいですね。 – musicliftsme

答えて

1

私はまさに、このようなタスクのためのNode.jsモジュールを作成しました:検証期待オブジェクトで提供されているフィールドだけを。

以下の例では、actual(テストで返されました)とexpected(期待される結果)の2つのオブジェクトを比較したいと思います。 actualのフィールドの中には自動生成されたフィールド(_id)があるので、それらが存在し、特別なフォーマットを持っていることを確認する必要があります。私が比較したくないフィールドのいくつか(タイプworkの電話、account.number)。

// Some test method returns this object 
let actual = { 
    _id: '5945bf36ccb3fa0011e8533c', 
    name: 'John', 
    email: '[email protected]', 
    phones: [ 
    { type: 'mobile', number: '1234567' } 
    { type: 'work', number: '567382' } 
    ], 
    account: { 
    number: '11111', 
    registered: '2010-04-21' 
    }, 
    createdAt: '2017-02-03' 
}; 

// Ned to do the following assertions: 
// _id is exists 
// name and email match 
// mobile phone is exists and it's a number 
// account registered match 
let expected = { 
    _id: '_mock_', 
    name: 'John', 
    email: '[email protected]', 
    phones: [ 
    { type: 'mobile', number: /^d{1,10}$/ } 
    ], 
    account: { 
    registered: '2010-04-21' 
    } 
} 

nassert.assert(actual, expected); // should pass 

リンク::だからexpectedオブジェクトは、テストのために必要なだけのフィールドが含ま可能な解決策のn-assert

関連する問題