簡體   English   中英

如何在函數typeorm nestjs中模擬變量

[英]how to mock variable inside function typeorm nestjs

我想測試將 .save 保存到 2 個表中的函數,但在第二個查詢中我必須使用第一個查詢中的 id 這是我的服務

async createBoth(createInput: CreateInput): Promise<SomeThing> {
    const data = await this.dataRepository.create(createInput);
    const data2 = {
      dataId: data.id,
      someInfo: 'test'
    };
    await this.data2Repository.create2(wallet);
  }

正如你在我的函數中看到的,我有 2 個查詢,首先我保存到 dataReposition ,然后我使用data.id保存到data.id

這是我的測試

describe('create Boath', () => {
  it('should be createBoth', async () => {
    await service.createBoth(mockInput);
  });
});

錯誤出現

Can't createBoth [ because I think It need to mock data.id ] 

我認為,您對單元測試有點錯誤。 Ofc,每個人對如何做都有自己的偏好......但無論如何。

單元測試的基本形式是測試一個特定方法的邏輯,而不是它調用的方法(在這方面,編寫可測試的代碼也很重要)。

因此,在您的情況下,您想要模擬的是被引用為 this.dataRepository 和 this.data2Repository 的 2 個對象。 這些對象必須模擬 create() 方法。

這將允許您控制從第一次調用返回哪些數據並驗證兩次調用的調用參數是什么。

您的測試應該進行上述驗證,否則除非調用嚴重失敗,否則它實際上並沒有進行太多測試。

說到這一點,在您的代碼中,您不要在聲明后使用 data2 常量。 您確定需要傳遞給第二次調用的是“錢包”變量而不是 data2?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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