当试图在测试用例中覆盖提供者时,Testbed.overrideProvider
它实际上并没有覆盖任何东西。
它曾经与茉莉花一起工作得很好 angular 9,不确定 angular 9 发生了什么变化而破坏了它。
任何帮助都会得到帮助。.bg-image
在我的应用程序 html 组件中,当 layout$ 包含“mobile”时,我将删除它。
这是我所拥有的:
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 渲染等等。但是我的问题仍然存在,我不确定这是一个错误,还是我只是愚蠢。在我继续在回购中打开一个问题之前,我只是想问一下这里有更多经验的人。