2017-07-07 10 views
2

ジャスミンを使って単体テストを学び始めました。そして、多分誰かが私を説明することができます - 私は次のように新しいオブジェクトを作成するチェックする必要があるか:作成オブジェクトのユニットテスト

const outLog = { 
    time: newTime, 
    request: { 
    direction: 'OUT', 
    method: data.request.method, 
    title: data.request.url, 
    body: data.request.data, 
    headers: getHeaders(data.request.headers), 
    }, 
    response: { 
    status: '', 
    headers: {}, 
    body: {}, 
    }, 
}; 

if (data.response && data.response !== null) { 
    outLog.response.status = data.response.status; 
    outLog.response.body = data.response.data; 
    outLog.response.headers = getHeaders(data.response.headers); 
} 

log.out.push(outLog); 

私がリクエストメソッド、実際のデータとリクエストのタイトルのようなフィールドを記入し、

const outLog = { 
    request: { 
    method: 'POST', 
    title: 'title', 
    ... 
    ... 
    }, 
} 

期待をチェックする必要がありますか(outLog.request.method).toEqual( 'POST'); expect(outLog.request.title).toEqual( 'title');

ありがとうございます!

答えて

0

オブジェクトをチェックするために、ほとんどのフレームワークは、通常、2つのオブジェクトを比較するときにかなりの違いを提供します。

は、あなたが最初にオブジェクトリテラルにそれを比較する必要があると思い、これを取得するには:

expect(outLog).toEqual({ 
    request: { 
    method: 'POST', 
    title: 'title', 
    ... 
}) 

これはまた、メンテナンスやデバッグに役立つはずですすべての期待のステートメントからのロジックの多くを削除します。さらに、多くの異なるアサーションがある場合、前のアサーションは後のアサーションをマスクし、単一のアサーションで同じことが達成できる場合に不要なフィードバックループを作成します。ユニットテストの思想的リーダーの一人は、単体テストに焦点を当て、デバッグ時間を短縮し、作業や理解を容易にするために、single assertionしか持たないことを推奨することでこれに対処しています。

+0

こんにちは!説明をありがとう!私はそれを期待する前にoutLogを定義する必要がありますか?ありがとう! –

関連する問題