测试RxJS:Frame在运行所有测试与仅运行一个测试上有所不同

时间:2019-08-14 13:02:10

标签: rxjs redux-observable

如果我一次运行一个史诗的所有测试,则只有第一个测试通过。其他测试失败,因为框架不同。但是每个测试都单独通过。

我没有发现与此相关的任何问题,在RxJS中发现了某些内容,而不是redux可观察到的文档。 我以为TestScheduler上可能有某种重置功能,但没有。

我的测试之一(它们看上去都很相似):

test('should fail if e-mail is missing', () => {
    testScheduler.run(({ hot, expectObservable }) => {
        const action$ = new ActionsObservable(
            hot('-a', {
                a: login('', 'secret')
            })
        );

        const output$ = epic(action$, null, null);

        expectObservable(output$).toBe('-a', {
            a: failure(
                formErrors.credentialsEmpty(['email', 'password'])
            )
        });
    });
});

我希望输出大理石的帧为1,但为2。 测试失败的输出:

Array [
        Object {
    -     "frame": 1,
    +     "frame": 2,
          "notification": Notification {
            "error": undefined,
            "hasValue": true,
            "kind": "N",
            "value": Object {

修改

我可以通过为每个测试创建一个TestScheduler实例来解决该问题,但是我不确定是否应该这样做。

1 个答案:

答案 0 :(得分:0)

今天偶然发现。我认为为每个测试创建一个新的TestScheduler可能是一个好主意。在两次测试之间似乎没有明显的影响-这样您就可以确定两次测试之间的状态已重置。

另一个解决方法是在beforeEach中执行testScheduler.frame = 0-但我选择每次都从头开始创建它。