1

当试图在测试用例中覆盖提供者时,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 渲染等等。但是我的问题仍然存在,我不确定这是一个错误,还是我只是愚蠢。在我继续在回购中打开一个问题之前,我只是想问一下这里有更多经验的人。

4

0 回答 0