【发布时间】:2020-07-14 00:22:33
【问题描述】:
我正在尝试与 Angular、Jest 和 Spectator 一起编写单元测试。现在我正在努力嘲笑 NgRx 商店。尝试从 Spectator 实例中获取提供的 NgRx 实例 MockStore 时,我收到“No provider for MockStore”错误。
我已经阅读了有关模拟和单元测试的 NgRx 文档,并且通过阅读文档,我能够在不使用 Spectator 的情况下模拟 NgRx 存储,我尝试在谷歌上搜索寻求帮助,但似乎找不到模拟示例NgRx store 与 Spectator 一起,我已经在 NgRx/store Gitter 上留言,看看是否有人可以帮助我。
我的代码如下所示:
let component: MyComponent;
let spectator: Spectator<MyComponent>;
let mockStore: MockStore<selectors.AppState>;
let mockUsernameSelector: MemoizedSelector<AppState, string>;
const createComponent = createComponentFactory({
component: MyComponent,
componentProviders: [
provideMockStore(),
],
shallow: true,
detectChanges: false,
});
beforeEach(() => {
spectator = createComponent();
component = spectator.component;
mockStore = spectator.inject<MockStore<selectors.AppState>>(MockStore);
mockUsernameSelector = mockStore.overrideSelector(selectors.selectUserName, 'Bob');
});
但正如我所说,一旦我尝试通过 spectator.inject(也尝试过 spectator.get)从 Spectator 获取 MockStore 的实例,我就会收到“No provider for MockStore”-错误。我也尝试像这样提供MockStore:
const createComponent = createComponentFactory({
component: MyComponent,
componentProviders: [
mockProvider(MockStore, provideMockStore()),
],
shallow: true,
detectChanges: false,
});
但很明显,我收到错误“没有商店的提供者”。
也许这里有人可以帮助我?提前致谢!
【问题讨论】:
-
我认为您需要将
MockStore添加到createComponentFactory的componentProviders数组属性中 -
或者只是
providers
标签: angular unit-testing jestjs ngrx-store angular-spectator