当我在一个程序包中运行整个单元测试时,某些测试会失败,尽管单独运行这些测试会成功。我不知道什么会影响一组跑步。
执行“ ng test --code-coverage”命令后,Jasmine-Karma将创建以下输出。
Component1 -测试案例1 =通过 -测试案例2 =通过 -测试案例3 =通过
Component2 -测试案例1 =通过/ -测试案例2 =失败/ -测试案例3 =通过/
例如,如果我只运行Com2-Case2,它将获得通过。
谢谢。
这是典型的单元测试样本:
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { TranslateModule } from '@ngx-translate/core';
import { FooterComponent } from './footer.component';
describe('FooterComponent', () => {
let comp: FooterComponent;
let fixt: ComponentFixture<FooterComponent>;
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [FooterComponent],
imports: [
TranslateModule.forRoot(),
],
}).compileComponents();
}));
beforeEach(() => {
fixt = TestBed.createComponent(FooterComponent);
comp = fixt.componentInstance;
});
it('should create component === FooterComponent', () => {
expect(comp).toBeTruthy();
});
});
答案 0 :(得分:0)
我通过使用“ FakeSync”和“ Tick”解决了这个问题。
我意识到,如果在测试用例调用中有订阅,它将影响下一个测试用例。为了解决这个问题,请选择Tick。
it('should create TranslationTexts', fakeAsync(() => {
comp.ngOnInit();
tick();
expect(JSON.stringify(comp.translationTexts).length).toBeGreaterThan(0);
}));
打勾有助于等待异步调用完成。 以下资源非常有帮助。
https://codecraft.tv/courses/angular/unit-testing/asynchronous/
谢谢。