NGXS:测试异步操作:自动订阅不起作用
NGXS: Testing Asynchronous Actions: Automatic subscription doesn't work
来自官网NGXS
- 我为 NGXS 商店编写单元测试(Jasmine + Karma,angular 2)
- 在异步操作的 NGXS 存储中(类似于 NGRX 中的效果)我们不在内部订阅 - 我们只是 return 可观察的。这很好,因为自动订阅有效。
- 但是,当我启动测试时,异步操作 (EFFECTS) 的自动订阅不起作用。结果 - 测试失败。
- 总结一下——我无法测试异步操作 NGXS
- 我已经尝试过的:
1)我在NGXS官网写的很像(图中) 2)我试了(done())构造, 3)我试了actions$.subscribe()构造。
- 它在我手动制作时有效 - 在 Action 中使用 .subscribe() - 但这是个问题,因为它必须在没有这个的情况下工作
- 这是link官方页面:https://www.ngxs.io/recipes/unit-testing(主题:测试异步操作)
请帮助:)
官方页面中的示例工作正常。如果你从一个动作中存根一些函数,returns Observable,尝试在你的存根函数中嵌入延迟。
例如,
stubFunc: () => {
return timer(0).pipe( ... );
}
答案
`
// it doesn't work for me:
myStubFunction: () => {
return of(stubResult);
};
// the solution was
myStubFunction: () => {
return timer(0).pipe(mergMap(()=>of(stubResult)));
};
`
来自官网NGXS
- 我为 NGXS 商店编写单元测试(Jasmine + Karma,angular 2)
- 在异步操作的 NGXS 存储中(类似于 NGRX 中的效果)我们不在内部订阅 - 我们只是 return 可观察的。这很好,因为自动订阅有效。
- 但是,当我启动测试时,异步操作 (EFFECTS) 的自动订阅不起作用。结果 - 测试失败。
- 总结一下——我无法测试异步操作 NGXS
- 我已经尝试过的: 1)我在NGXS官网写的很像(图中) 2)我试了(done())构造, 3)我试了actions$.subscribe()构造。
- 它在我手动制作时有效 - 在 Action 中使用 .subscribe() - 但这是个问题,因为它必须在没有这个的情况下工作
- 这是link官方页面:https://www.ngxs.io/recipes/unit-testing(主题:测试异步操作) 请帮助:)
官方页面中的示例工作正常。如果你从一个动作中存根一些函数,returns Observable,尝试在你的存根函数中嵌入延迟。 例如,
stubFunc: () => {
return timer(0).pipe( ... );
}
答案
`
// it doesn't work for me:
myStubFunction: () => {
return of(stubResult);
};
// the solution was
myStubFunction: () => {
return timer(0).pipe(mergMap(()=>of(stubResult)));
};
`