我有这两个测试来测试我的应用程序的初始状态,它们都以类似的方式意外运行:
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,
},
}),
],
我在这里错过了什么?如果我相信控制台日志,我就会找回正确的值。这些组件也可以完美运行。那么,我是否设置了错误的测试?
这里是链接到项目存储库。