'Expect'-使用 jest inside subscriptions 检查未按预期运行

问题描述 投票:0回答:0

我有这两个测试来测试我的应用程序的初始状态,它们都以类似的方式意外运行:

describe('AppComponent', () => {
  let component: AppComponent
  let fixture: ComponentFixture<AppComponent>

  beforeEach(async () => {
    await TestBed.configureTestingModule({
      imports: [
        RouterModule.forRoot(routes),
        StoreModule.forRoot({ core: appReducer }),
        MatSidenavModule,
        BrowserAnimationsModule,
        MatListModule,
        MatToolbarModule,
        MatIconModule,
        MatFormFieldModule,
        MatSelectModule,
      ],
      declarations: [AppComponent, HeaderComponent],
    }).compileComponents()
  })

  beforeEach(() => {
    fixture = TestBed.createComponent(AppComponent)
    component = fixture.componentInstance
    fixture.detectChanges()
  })

  it('should have a default theme of light', () => {
    expect(component.theme$).toBeDefined()
    component.theme$.subscribe((theme) => {
      console.log('theme', theme)
      expect(theme).toEqual('lol') // ?????
    })
  })

  it('should have the side navigation panel open by default', () => {
    expect(component.sidenav$).toBeDefined()
    component.sidenav$.subscribe((sidenav) => {
      console.log(typeof sidenav, sidenav)
      fixture.detectChanges()
      expect(sidenav).toBe(false) // ?????
    })
  })
})

第一个控制台日志打印

theme { title: 'Light Theme', value: 'light-theme' }
,第二个控制台日志打印
boolean true
。然而,无论值是多少,这两个测试都通过了。正如你所看到的,我什至可以直接传入 'lol' 并且测试仍然成功。

我也试过提供一个mockStore,结果一样:

providers: [
  provideMockStore({
    initialState: {
      core: initialState,
    },
  }),
],

我在这里错过了什么?如果我相信控制台日志,我就会找回正确的值。这些组件也可以完美运行。那么,我是否设置了错误的测试?

这里是链接到项目存储库

angular jestjs ngrx
© www.soinside.com 2019 - 2024. All rights reserved.