NGXS:测试异步操作:自动订阅不起作用

NGXS: Testing Asynchronous Actions: Automatic subscription doesn't work

来自官网NGXS

  1. 我为 NGXS 商店编写单元测试(Jasmine + Karma,angular 2)
  2. 在异步操作的 NGXS 存储中(类似于 NGRX 中的效果)我们不在内部订阅 - 我们只是 return 可观察的。这很好,因为自动订阅有效。
  3. 但是,当我启动测试时,异步操作 (EFFECTS) 的自动订阅不起作用。结果 - 测试失败。
  4. 总结一下——我无法测试异步操作 NGXS
  5. 我已经尝试过的: 1)我在NGXS官网写的很像(图中) 2)我试了(done())构造, 3)我试了actions$.subscribe()构造。
  6. 它在我手动制作时有效 - 在 Action 中使用 .subscribe() - 但这是个问题,因为它必须在没有这个的情况下工作
  7. 这是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)));
};
`