angular - 如何在 Angular 组件中模拟 ngrx 动作?
问题描述
//init函数的组件代码
this.rootStore.dispatch(new action1());
在我称之为“action1Success”的效果中
我在组件中有 action1Success 和订阅功能的管道
//组件代码
this.actionListener$.pipe( ofType( MyactionTypes.action1Success)).subscribe((success: SuccessObj) => { });
解决方案
你可以使用provideMockActions
import { provideMockActions } from '@ngrx/effects/testing';
...
describe('RouterHistoryEffects', () => {
let actions: ReplaySubject<any>;
let effects: YourEffects;
beforeEach(() => {
TestBed.configureTestingModule({
providers: [
provideMockActions(() => actions)
]
});
....
你的测试应该是这样的
// dispatch your action
(actions$ as ReplaySubject).next({ type: '[Users] Get Users' })
// subscribe to the Effect stream
effects.getUsers$.subscribe(action => {
expect(action).toEqual({
type: '[Users API] action1Success',
users: [...],
});
});
推荐阅读
- c# - 初始化安装时发生异常:System.BadImageFormatException:无法加载文件或程序集
- node.js - 如何在NodeJS中访问AudioContext并将正弦波写入AudioBuffer
- html - 使导航栏响应的好方法
- docker - 对使用 Docker 的容器网络隔离感到困惑
- node.js - 错误:使用 Google Drive API 创建权限时需要权限类型字段
- html - 如何使占位符字体(形式)大小在设备之间相同?
- rust - 如何在测试范围的mod中使用注解和微?
- hazelcast - hazelcast 开源成本?
- iptables - `iiptables input policy drop`变成`all forward drop`
- node.js - 如何保护 nodejs 中的套接字连接?