簡體   English   中英

比較開玩笑單元測試用例中的響應

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM