为什么我们需要在角度2测试中覆盖组件?

时间:2017-09-18 11:21:15

标签: angular unit-testing karma-jasmine

我对测试时覆盖组件的使用感到困惑 在下面的代码中,我模拟了一个名为HomeModel的服务。

使用overrideComponent

TestBed
    .configureTestingModule({
        imports: [CoreModule],
        declarations: [HomeComponent],
        providers: [
            {provide: Router, useValue: router}
        ],
        schemas: [NO_ERRORS_SCHEMA]
    })
    .overrideComponent(HomeComponent, {        
        set: {
            providers: [
                {provide: HomeModel, useClass: MockHomeModel}
            ],
        }
    })
    .compileComponents();
}));

没有overrideComponent

TestBed
    .configureTestingModule({
        imports: [CoreModule],
        declarations: [HomeComponent],
        providers: [
            {provide: Router, useValue: router},
            {provide: HomeModel, useClass: MockHomeModel}
        ],
        schemas: [NO_ERRORS_SCHEMA]
    })
    .compileComponents();
}));

我们不能只在useClass中指定providers而不是覆盖该组件吗?在我的情况下,它只有在我覆盖时才有效。后者不起作用。

overrideComponent在测试中的主要用途是什么?

0 个答案:

没有答案