Angular 上的 switch 语句的单元测试

Unit-Test for a switch statement on Angular

我是 angular 单元测试的新手,我不知道如何测试这个开关:

  displayBadge(text: any) {
    switch (text) {
      case 'blabla':
        return 'badge badge-pill badge-success';
      case 'lalala':
        return 'badge badge-pill badge-secondary';
      case 'uuuu':
        return 'badge badge-pill badge-warning';
      case 'ooooo':
        return 'badge badge-pill badge-warning';
      case 'eeee':
        return 'badge badge-pill badge-warning';
      case 'zzzzz':
        return 'badge badge-pill badge-dark';
      case 'aaaaa':
        return 'badge badge-pill badge-dark';
      case 'qqqqq':
        return 'badge badge-pill badge-success';
      case 'ccccc':
        return 'badge badge-pill badge-warning';
      case 'rrrrr':
        return 'badge badge-pill badge-success';
      case 'ttttt':
        return 'badge badge-pill badge-warning';
      case 'fffff':
        return 'badge badge-pill badge-success';
      default:
        return '';

我在 VSCODE 上使用 Simontest 插件,代码覆盖率总是告诉我我丢失了大约 80% 的覆盖率,这就是这个开关。

我在我的 spec.ts 文件上试过这种方法:

it('text aaaaa', () => {
    component.text ='aaaaa'
    component.displayBadge(component.text);
    expect('badge badge-pill badge-secondary');
  });

但是没用。

文本在我的 ts 中是这样定义的:

@Input()
  text!: any;

我看到还有其他关于测试开关的帖子,我已经尝试了我在堆栈上看到的所有内容,通常在 Google 上,但 SimonTest 总是告诉我这个功能没有经过测试.

由于 displayBadge() 返回的是您正在测试的值,因此类似这样的操作应该有效:

it('text aaaaa', () => {
 expect(component.displayBadge('aaaaa')).toEqual('badge badge-pill 
 badge-secondary');
});