如何从 Typescript 中的数据类型创建假对象以进行测试

Kar*_*rim 7 unit-testing jasmine typescript angular

我正在寻找一种方法来简化在 Angular 解决方案中为单元测试制作虚假数据的过程。我正在使用如下接口:

export interface ReferenceDataItemCommon {
  codeDescription?: string;
  code: string;
  deleted?: boolean;
}
Run Code Online (Sandbox Code Playgroud)

作为应用程序中的数据类型。目前使用 Factory.ts + Faker 创建假对象以进行测试:

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

但我很好奇是否有一种方法可以进一步简化它,当您只需要一个对象进行测试并加快创建它的速度时。Typescript 中是否可以有一个通用方法来返回该数据类型的对象?

  const fake = createFake<ReferenceDataItemCommon>();
Run Code Online (Sandbox Code Playgroud)

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

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

对于复杂的对象,递归地调用此方法。这可能吗?如果我觉得有点超出我的深度,那么更好的方法是什么?

小智 2

当您使用 cli 创建工厂时,而不是在运行时创建工厂时,可能会出现以下情况:

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