我正在寻找一种方法来简化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)),
});
但我很好奇,当你只想为你的测试创建一个对象,并加快创建速度时,是否有一种方法可以简化它。Typescript中是否可以有一个返回该数据类型对象的泛型方法?
const fake = createFake<ReferenceDataItemCommon>();
我最初的想法是做一些类似的事情:
Object.keys(object).forEach(key => {
switch(typeof object[key]) {
case 'string':
object[key] = Faker.lorem.word();
break;
}
}
return object;
对于复杂对象,递归调用此方法。这可能吗?如果有什么更好的方法可以做到这一点,因为我觉得有点力不从心?
当您使用cli创建工厂时,而不是在运行时,这是可能的:
https://www.npmjs.com/package/intermock看起来很有前景
我也在搜索类似的东西,但也没有找到https://www.npmjs.com/package/class-validator-mocker,它与用类验证器装饰器注释的类一起工作。如果你可以使用数据类而不是接口来定义某些类型,我认为值得一看