RxJS 大理石测试在使用我自己的可观察量而不是使用 createHotObservable 方法创建一个时失败



我正在尝试用RxJS弹珠创建一个简单的测试。

我正在使用摩卡和柴。

我正在实例化一个新的测试调度程序,但我不想使用"testScheduler.createHotObservable方法",因为我想使用我自己的可观察,"Observable.of(4(">

 const testScheduler = new TestScheduler(assert.deepEqual.bind(assert));
      const expected = "a";
      const expectedStateMap = {
        a: 4
      };
      testScheduler.expectObservable(Observable.of(4)).toBe(expected, expectedStateMap);
      testScheduler.flush();

这是错误:

 AssertionError: expected [ Array(2) ] to deeply equal [ Array(1) ]
      + expected - actual
           "notification": {
             "error": [undefined]
             "hasValue": true
             "kind": "N"
      -      "value": 4
      +      "value": "4"
           }
         }
      -  {
      -    "frame": 0
      -    "notification": {
      -      "error": [undefined]
      -      "hasValue": false
      -      "kind": "C"
      -      "value": [undefined]
      -    }
      -  }
       ]
      at TestScheduler.flush (node_modules/rxjs/src/testing/TestScheduler.ts:135:12)

任何想法出了什么问题?

是的,它不起作用。hotcold可观察创建方法是基于给定的弹珠创建可观察的,并在测试调度器内部setup。当测试调度器通过flush执行时,它会迭代所有可观察和刷新。如果提供了自定义可观察量,则测试调度程序不知道这些可观察量的存在,也不会刷新这些可观察量。

这只是当前测试调度器实现的限制 - 除非猴子补丁测试调度器接受自定义可观察,否则它可能无法按预期工作。

你只是忘了完成你的可观察量。

  const expected = "a";
  const expectedStateMap = {
    a: 4
  };

可以重构为

  const expected = "4|";

最新更新