无法覆盖角度9中的提供者

时间:2020-04-16 15:45:47

标签: angular jestjs angular-test angular-testing angular-jest

在尝试使用测试用例覆盖提供程序时,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渲染等等。但是我的问题仍然存在,我不确定这是否是错误,还是我只是傻瓜。我只是想问一个有更多经验的人,然后再进行回购。

0 个答案:

没有答案