我有一个效果是从参数中获取最新的并将其传递到一个 exhaustMap 中,然后调用一个服务。
@Effect()
loadPlansOnParams$ = this.actions$.pipe(
ofType(backlogActions.BacklogActionTypes.GET_BOARDS_IN_PARAMS),
withLatestFrom(this.store.select(fromRoot.getRouterState), (action, router) => {
const {
state: {
queryParams: { boards },
},
} = router;
return {
boards,
};
}),
exhaustMap(payload => {
return this.boardService.getBoardsFromParams(payload.boards).pipe(
map((res: SignalRResult) => {
const board = res.item;
return new backlogActions.GetBoardsSuccess(board);
}),
catchError(err => of(new backlogActions.GetBoardsError(err))),
);
}),
);
一切都很好。但是我无法用它来测试我的生命。我能找到的几乎所有示例都是无用的。
这是我的测试...
describe('getting boards from the params', () => {
it('should return an empty array if no params', () => {
const params = { state: { queryParams: {} } };
const successfulSignalRResult = { isSuccessful: true, item: [] };
const action = new backlogActions.GetBoardsInParams();
const outcome = new backlogActions.GetAvailableBoardsSuccess([]);
actions.stream = hot('-a', { a: action });
store.select = jest.fn(() => of(params));
expected = cold('--b', { b: outcome });
boardSvc.getBoardsFromParams = jest.fn(() => successfulSignalRResult);
expect(effects.loadPlansOnParams$).toBeObservable({});
});
});
无论我对 store.select 模拟做什么,我都会返回“您在需要流的位置提供了‘undefined’。”
感谢任何帮助。我真的希望我在弹珠上遗漏了一些东西。
最佳答案
也许,这是迟到的答案。我遇到了同样的问题。
我不知 Prop 体原因。在我看来,同时使用MockStore和effect时,getRouterState并没有初始化。在构造函数中初始化 loadPlansOnParams$ 时,getRouterState 未正确初始化。
简单来说,getRouterState 的初始化像这样位于 loadPlansOnParams$ 之前。
@Effect()
SomeVariableForGetRouterState:Observable<SomeThing> = ..... fromRoot.getRouterState ..... like this..
loadPlansOnParams$ = this.actions$.pipe(
ofType(backlogActions.BacklogActionTypes.GET_BOARDS_IN_PARAMS),
withLatestFrom( SomeVariableForGetRouterState, (action, router) => {
.....
);
https://stackoverflow.com/questions/54444157/
相关文章:
python-3.x - celery 错误 : result. get(timeout=5) 超时
typo3 - 使用流体创建数组和对象 f :variable
sql - AWS Redshift 身份列插入 - 新记录的身份值不大于以前的最大身份值
ruby-on-rails - rake 数据库 :setup is giving Library
python - 如何在 django 中使用 ajax 形式验证 django-recaptcha
javascript - 为什么 Chrome 在使用 Typed.js 时难以呈现表情符号?
amazon-ec2 - HAProxy - 基于 URL/路径路由到后端 IP?