小编Kar*_*rim的帖子

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

我正在寻找一种方法来简化在 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)

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

unit-testing jasmine typescript angular

7
推荐指数
1
解决办法
7891
查看次数

C - 在函数中使用未声明的标识符.CS50

我正在重写我的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 - 解决方案规范我试图重做.

c validation function cs50

2
推荐指数
1
解决办法
366
查看次数

标签 统计

angular ×1

c ×1

cs50 ×1

function ×1

jasmine ×1

typescript ×1

unit-testing ×1

validation ×1