Angular Karma没有运行所有单元测试

时间:2018-04-04 12:04:28

标签: angular unit-testing jasmine karma-jasmine

我写了两个单元测试,但没有执行。 请参阅下面的两个屏幕截图。

有什么问题,为什么不执行?

你可以阅读我收到的消息:     “执行 45 of 47 也意味着,测试被发现,只是没有被执行。 怎么会这样?

@Terminal

@Karma

describe('LanguageSelectorComponent', () => {
  let component: LanguageSelectorComponent;
  let fixture: ComponentFixture<LanguageSelectorComponent>;
  let find: any;

  beforeEach(() => {
    TestBed.configureTestingModule({
      declarations: [LanguageSelectorComponent],
      imports: [DxModule, RouterTestingModule],
      providers: [HttpClient, HttpHandler, NGXLogger, LanguageSelectorService]
    });

    fixture = TestBed.overrideComponent(LanguageSelectorComponent, {
      set: {
        providers: [{ provide: LanguageSelectorService, useClass: MockLanguageSelectorService }]
      }
    }).createComponent(LanguageSelectorComponent);
    fixture.detectChanges();
    component = fixture.componentInstance;
    find = (de => selector => de.query(By.css(selector)))(fixture.debugElement);
  });

  it('should create', () => {
    expect(component).toBeTruthy();
  });

  it('should create dx select box', () => {
    expect(find('dx-select-box')).toBeDefined();
  });
});

2 个答案:

答案 0 :(得分:1)

您可以根据需要使用karma-jasmine运行少量测试用例。这可以通过将describe加上f(代表焦点)作为fdescribeitfit作为前缀。

fdescribe运行该组件中实现的所有测试规范。 fit仅运行该特定测试规范。可以在多个测试规范上执行fit,这些测试规范将运行多个测试规则而忽略其他测试规范。

要排除少数测试规范或整个组件分别使用xitxdescribe

请查看这些特殊关键词的规格。你的问题可能会得到解决。

答案 1 :(得分:0)

解决方案不是在上面的代码中找到的。 我的languageSelectorService包含了一个cookieStoreService 并且在构建应用程序时存在不匹配。 我将cookieStoreService移动到组件中,现在它可以工作。

感谢阿米特为你的台词! (我学习了fdescribe。)