angular - 测试组件时使用 2 个减速器的 Store 的 InitialState
问题描述
我正在尝试测试一个组件。它对 Ngrx 使用 2 种不同的减速器状态。请问如何在测试的初始状态中判断哪个来自 AppState 而另一个来自 AdminState (LazyLoaded)?
describe('UploadImageComponent', () => {
let component: UploadImageComponent;
let fixture: ComponentFixture<UploadImageComponent>;
const initialState = {
selectedPage: null, // comes from AppState
pages: [], // comes from AppState
uploadLoading: false, // comes from AdminState (LazyLoaded)
thumbnailIsCreating: false // comes from AdminState (LazyLoaded)
};
beforeEach(async () => {
await TestBed.configureTestingModule({
declarations: [UploadImageComponent],
imports: [
RouterTestingModule,
AngularFireDatabaseModule,
AngularFireModule.initializeApp(environment.firebase)
],
providers: [
PageDbService,
AdminService,
PagesService,
provideMockStore({ initialState }),
]
})
.compileComponents();
});
beforeEach(() => {
fixture = TestBed.createComponent(UploadImageComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});
在运行 ng test 时,业力说:
TypeError:无法读取未定义的属性“thumbnailIsCreating”
我认为 selectedPage 和 pages 都通过了,但不是来自 AdminState 的另外两个。是因为 AdminState 是lazyLoaded 的吗?或者可能 initialState 是错误的?
解决方案
这很可能是你initialState
的错误。
下载 Redux 开发工具(https://chrome.google.com/webstore/detail/redux-devtools/lmhkpmbekcpmknklioeibfkpmmfibljd?hl=en,还有一个 Firefox 工具)并使用该工具查看商店的结构。这是您配置它的方式(https://ngrx.io/guide/store-devtools),然后您可以执行 npm start 并应该看到您的商店的结构。
我打赌你的 initialState 应该是这样的:
initialState = {
selectedPage: null, // comes from AppState
pages: [],
admin: {
uploadLoading: false, // comes from AdminState (LazyLoaded)
thumbnailIsCreating: false
}
}
推荐阅读
- heroku - Heroku 上的 Symfony 4:日志尾巴
- javascript - 如何从 React 中的外部 json 文件中获取数据
- cypress - 你如何让 Cypress 在 Chrome 而不是 Electron 中打开?
- ruby-on-rails - 具有多个 select_tags 的过滤器不发送查询
- kotlin - 来自相机预览流的 ML 条码扫描仪?
- javascript - 无法通过酶关闭模式菜单
- python - How to add non-english characters on a screen title in pygame?
- c - 单链表:newNode 函数不指向下一个节点
- c# - 异步事件处理程序有时会挂在 Xamarin.Forms
- c# - c# Get File Last Access or Usuability