在尝试使用测试用例覆盖提供程序时,Testbed.overrideProvider
实际上不会覆盖任何内容。
它过去曾与茉莉一起在角度9上正常工作,不确定角度9发生了什么变化从而破坏了它。
将寻求任何帮助。
在我的应用html组件中,当layout $包含“ mobile”时,我正在删除.bg-image
。
这就是我所拥有的:
app.component.spec.ts
TestBed.configureTestingModule({
imports: [
RouterTestingModule,
],
providers: [
{
provide: BreakpointService,
useValue: {
layout$: of('web')
}
}
],
declarations: [AppComponent]
}).compileComponents();
在我的一个测试用例 it()中,我正在做
TestBed.overrideProvider(BreakpointService, {
useValue: { layout$: of('mobile') }
});
fixture.detectChanges();
const imageElem = fixture.debugElement.query(By.css('.bg-image'));
expect(imageElem).toBeFalsy();
我以前用Angular 6覆盖过这样的Provider,现在已经有一段时间没有使用Angular了。今天,我开始使用angular 9进行一个新项目,甚至使用overrideProvider
模拟这些相同的方法也不再起作用。
我知道自从angular 6以来,实际上有很多改变,例如默认的测试框架已经从jasmine变成了jest,新的ivy渲染等等。但是我的问题仍然存在,我不确定这是否是错误,还是我只是傻瓜。我只是想问一个有更多经验的人,然后再进行回购。