我正在寻找一种方法来简化在 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)
对于复杂的对象,递归地调用此方法。这可能吗?如果我觉得有点超出我的深度,那么更好的方法是什么?
我正在重写我的CS50信用解决方案以使用功能.定义readCardNumber()时偶然发现错误.
long long readCardNumber()
{
do
{
long long result = get_long_long("Enter card number to verify: \n");
if (result < 0)
{
printf("Retry: \n");
}
}
while (result < 0);
return result;
}
Run Code Online (Sandbox Code Playgroud)
我使用CS50.h https://reference.cs50.net/cs50/get_long_long来获取号码.由于以下原因,我无法编译此解决方案:
error: use of undeclared identifier 'result'
Run Code Online (Sandbox Code Playgroud)
有人可以体验一下这里的问题吗?我在我的代码开头声明了函数,并在函数中声明和初始化结果.验证该数字的更好方法是什么?
https://docs.cs50.net/2018/x/psets/1/credit/credit.html - 解决方案规范我试图重做.