作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个使用 NgRx 和 @ngrx/router-store
(8.4.0) 的 Angular 8 应用程序(核心 8.1.2),但是我无法模拟由 fromRouter 生成的选择器.getSelectors(selectRouter)
.
我编写并尝试测试的选择器如下所示:
export const selectFilteredPagedFeaturedPlaylists = createSelector(
selectFilteredFeaturedPlaylists,
selectRoutePageIndex,
selectPageSize,
(featuredPlaylists, pageIndex, pageSize) => ({
...featuredPlaylists,
content: featuredPlaylists.content.slice(+pageIndex * pageSize, (+pageIndex + 1) * pageSize)
})
);
和 selectRoutePageIndex
选择器调用商店生成的方法,如下所示:
export const selectRoutePageIndex = selectRouteParam('pageIndex');
实际上,我不一定关心模拟 selectRouteParam
选择器,但我需要模拟我的 selectRoutePageIndex
选择器。不幸的是,technique described in the docs似乎不适用于 @ngrx/router-store
生成的选择器。
有什么想法可以做到这一点吗?
最佳答案
只想在 2019 年提供我的解决方案。它已经与您的非常相似。以下是我为路由器设置选择器的方式。
export const selectRouter = createSelector(
(state: fromRoot.State) => state.router,
value => value,
);
const {
selectQueryParams, // select the current route query params
selectQueryParam, // factory function to select a query param
selectRouteParams, // select the current route params
selectRouteParam, // factory function to select a route param
selectRouteData, // select the current route data
selectUrl, // select the current url
}: RouterStateSelectors<any> = fromRouter.getSelectors(selectRouter);
然后,在我的测试中,我可以像这样模拟路由器状态。
mockStore.overrideSelector(fromCore.selectRouter, {
state: {
root: {
params: {
't': 'test', // query string parameter
},
},
},
navigationId: null,
});
关于angular - 模拟@ngrx/router-store 的 selectRouteParam,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58393261/
我有一个使用 NgRx 和 @ngrx/router-store (8.4.0) 的 Angular 8 应用程序(核心 8.1.2),但是我无法模拟由 fromRouter 生成的选择器.getSe
我是一名优秀的程序员,十分优秀!