[英]Compare response in jest unit test case
我是 jest 單元測試用例場景的新手,我有一個場景,在我調用的服務的響應中,我調用的格式如下
Artifact {
name: 'detection-v1.zip',
file_path: 'artifact\\bn-ds-anomalydetection-v1.zip',
is_tenant: false,
metadata: [
Registerfact {
name: 'ad',
_meta: [Object],
line_meta: [Object]
},
Registerfact {
name: 'ad-generic',
_meta: [Object],
line_meta: [Object]
}
]
}
我如何比較開玩笑服務中的上述響應,我試圖創建一個 object 但 object 之前的工件名稱令人困惑我應該如何繼續
測試用例是
test('test processArtifact method', async()=>{
const mockGetRestClient = jest.fn();
try{
const response = await factService.processfact(artifact)
console.log("response---",response)
// expect(response).toEqual()
}
catch(e){ }
})
我知道它的愚蠢問題,但我很困惑,因此發布了它。
我應該如何創建 static object 以放入.toEqual()?
您可以在文件頂部使用響應 object 聲明全局/靜態變量。 或者最好在一些常量文件中聲明它並在此處導入。
比較:通常,如果你有一個簡單的 object,你可以使用JSON.stringify
。 但是,由於 object 鍵的順序不同,它可能會出錯。
您應該使用assert進行深度比較。 有方法assert.deepEqual()
可以對對象進行深度比較。
使用官方文檔中的斷言的示例
import assert from 'node:assert';
const obj1 = {
a: {
b: 1
}
};
const obj2 = {
a: {
b: 2
}
};
const obj3 = {
a: {
b: 1
}
};
const obj4 = Object.create(obj1);
assert.deepEqual(obj1, obj1);
// OK
// Values of b are different:
assert.deepEqual(obj1, obj2);
// AssertionError: { a: { b: 1 } } deepEqual { a: { b: 2 } }
assert.deepEqual(obj1, obj3);
// OK
// Prototypes are ignored:
assert.deepEqual(obj1, obj4);
// AssertionError: { a: { b: 1 } } deepEqual {}
希望這會有所幫助,如果您有任何問題,請告訴我。
您可以使用JSON.stringify
將 object 轉換為字符串,然后將此結果與您期望的結果進行比較。
console.log(JSON.stringify({ name: 'detection-v1.zip', file_path: 'artifact\\bn-ds-anomalydetection-v1.zip', is_tenant: false, metadata: [ {Registerfact: { name: 'ad', _meta: {}, line_meta: {} }}, {Registerfact: { name: 'ad-generic', _meta: {}, line_meta: {} }} ] }));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.