RxJS测试:大理石测试用例

RxJS测试:大理石测试用例,rxjs,jasmine-marbles,rxjs-marbles,Rxjs,Jasmine Marbles,Rxjs Marbles,我将单元测试添加到angular/rxjs项目中,并使用大理石测试解决方案。由于我使用的是较新版本的rxjs,所以我使用了内置的“TestScheduler”模块 我关注这篇文章:,它给出了一个例子如下: export class UserEffects { @Effect() addUser: Observable<Action> = this.actions$ .ofType<AddUser>(UserActionTypes.AddUser)

我将单元测试添加到angular/rxjs项目中,并使用
大理石测试
解决方案。由于我使用的是较新版本的rxjs,所以我使用了内置的“TestScheduler”模块

我关注这篇文章:,它给出了一个例子如下:

export class UserEffects {
  @Effect()
  addUser: Observable<Action> = this.actions$
    .ofType<AddUser>(UserActionTypes.AddUser)
    .pipe(
      map(action => action.payload),
      exhaustMap(payload => this.userService.addUser(payload.user)),
      map(user => new AddUserSuccess({ user })),
      catchError(error => of(new AddUserFail({ error })))
    );

  constructor(private actions$: Actions, private userService: UserService) {}

}
我可以理解这里的逻辑(大理石字符串),但有一点令人困惑:

cold('--b', { b: outcome })
为什么不呢?因为可观察到的响应在
cold('-a |',{a:user})中有一个完成事件


顺便说一句,在这篇文章中,它将是第三方库,但我使用本机
TestScheduler
,并得到相同的结果

我想先说我对ngrx不太熟悉,所以这只是我的猜测:看起来好像所有的东西都被传递到了action reducer中。操作流
-a
正在使用
--b
进行测试,您不希望操作缩减器结束,因为您希望它能够在下一个操作中执行

cold('--b', { b: outcome })