簡體   English   中英

如何從 Typescript 中的數據類型創建假 object 以進行測試

[英]How to create fake object from a data type in Typescript for testing

我正在尋找一種方法來簡化在 Angular 解決方案中為單元測試制作假數據。 我正在使用如下接口:

export interface ReferenceDataItemCommon {
  codeDescription?: string;
  code: string;
  deleted?: boolean;
}

作為應用程序中的數據類型。 目前使用 Factory.ts + Faker 為測試目的創建假對象:

  export const fakeReferenceDataItemCommon = Factory.Sync.makeFactory<ReferenceDataItemCommon>({
    code: Factory.each(() => Faker.lorem.word()),
    codeDescription: Factory.each(() => Faker.lorem.sentence(4)),
  });

但是我很好奇是否有一種方法可以進一步簡化它,因為您只需要一個 object 來進行測試並更快地創建它。 Typescript 中是否有可能有一個通用方法返回該數據類型的 object?

  const fake = createFake<ReferenceDataItemCommon>();

我最初的想法是做類似的事情:

Object.keys(object).forEach(key => {
  switch(typeof object[key]) {
    case 'string':
       object[key] = Faker.lorem.word();
       break;
  }
}
return object;

對於復雜的 object 遞歸調用此方法。 這有可能嗎,如果我覺得有點超出我的深度,那么有什么更好的方法來做到這一點?

當您使用 cli 創建工廠時,而不是在運行時,它是可能的:

https://www.npmjs.com/package/intermock看起來很有希望

我也在尋找類似的東西,但也沒有找到。 因此,我創建了這個庫https://www.npmjs.com/package/class-validator-mocker ,它適用於使用類驗證器裝飾器注釋的類。 如果您可以使用數據類而不是接口來定義某些類型,我認為值得一看。

暫無
暫無

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

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