Jasmine-Karma UnitTest单独运行还是全部运行

时间:2018-08-16 19:03:04

标签: angular unit-testing karma-jasmine

当我在一个程序包中运行整个单元测试时,某些测试会失败,尽管单独运行这些测试会成功。我不知道什么会影响一组跑步。

执行“ 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();
    });

});

1 个答案:

答案 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/

谢谢。