当前位置: 首页 > 知识库问答 >
问题:

尽管单元测试显然应该通过,但它还是没有通过?

卫才哲
2023-03-14

我有一个简单的功能,我想测试,但明显的结果是没有发生。。。

我的函数是如何工作的(实际上它确实工作,只是没有正确测试)

  1. 我将字符串传递到函数中

当我运行所示的测试时,我收到错误:

预期默认值等于hare失败

我的组件

const state = [
   {name: 'failure'}
];

isStatus(current): string {
    for (const status of this.state) {
      if (status.name === current) {
        return current;
      }
    }
    return 'default';
  }

我的测试

beforeEach(async(() => {

    TestBed.configureTestingModule({
      declarations: [EventComponent, ConfirmationComponent],
      imports: [ReactiveFormsModule, FormsModule],
      providers: []
    });

    fixture = TestBed.createComponent(EventComponent);
    component = fixture.componentInstance;
    component.ngOnInit();
  }));

it('should return current status if it is part of exceptional statuses', () => {
    const returned = component.isState('failure');
    expect(returned).toEqual('failure');
  });

共有2个答案

阚元白
2023-03-14

我认为在循环中使用const是问题所在。在这里应该使用let,因为使用const可以防止在循环过程中重新分配值。

isStatusExceptional(currentStatus): string {
    for (let status of this.exceptionalRaceStatuses) {
      if (status.name === currentStatus) {
        return currentStatus;
      }
    }
    return 'default';
  }

Typescript文档似乎同意这一点。

贺佑运
2023-03-14

在这种情况下,尽量不要使用for of循环。您可以使用数组的some()方法重新编写组件,并创建一个纯函数。

因此,与其说:

isStatusExceptional(currentStatus): string {
for (const status of this.exceptionalRaceStatuses) {
  if (status.name === currentStatus) {
    return currentStatus;
  }
}
return 'default';

}

写下:

isStatusExceptional(current, erc = this.exceptionalRaceStatuses): string {
  return erc.some(item => item.name === current) ? current : 'default';
}
 类似资料:
  • 我有一个带有两个Selenium服务的Docker撰写文件: 我有另一个服务设置与量角器安装。 这是我的量角器配置文件: 这可以成功运行,但如果我将浏览器名称更改为firefox,将selenium地址更改为firefox容器,测试就会失败。 1) 选中时,includes coachcard指令应显示coachcard类型面板 消息:失败:在页面上找不到角度http://build-tool:8

  • 我找不到Java的自包含UUID5实现,所以我试着在下面滚动这个解决方案。它通过了我的一些单元测试,但是没有通过其他的。这里面有什么明显的漏洞吗?

  • 问题内容: 今天,我实验室中的一个敏感操作完全出错。电子显微镜上的执行器越过边界,经过一连串的事件,我损失了1200万美元的设备。我将有故障的模块中的超过40K行缩小为: 我得到的一些输出示例: 由于这里没有任何浮点算法,而且我们都知道有符号整数在Java中的溢出情况下表现良好,因此我认为这段代码没有错。但是,尽管输出表明程序未达到退出条件,但程序仍达到了退出条件(是否达到 和 未达到?)。为什么

  • 我正在使用Jenkins进行自动化测试。我的作业运行windows可执行批处理每天早上8:00归档,并向所有定义的收件人发送和通知。我有大约15个测试用例,都通过了。TestNG结果如下: 我交叉检查了詹金的所有配置。一切都如预期的那样,我的构建仍然失败,我每次都会得到这个报告: '控制台输出 由工作区F:\Automation\MovingWalls中的计时器构建启动未触发任何电子邮件。[Mov

  • 今天我实验室的一个敏感操作完全出了问题。一台电子显微镜上的一个致动器越过了它的边界,在一系列事件之后,我损失了1200万美元的设备。我将故障模块中的40K行缩小到以下范围: 我得到的一些输出示例: 因为这里没有任何浮点运算,而且我们都知道有符号整数在Java溢出时表现良好,所以我认为这段代码没有问题。然而,尽管输出表明程序没有达到退出条件,但它却达到了退出条件(既达到了又没有达到?)。为什么? 我