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



我正在寻找一种方法来简化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,它与用类验证器装饰器注释的类一起工作。如果你可以使用数据类而不是接口来定义某些类型,我认为值得一看

最新更新