使用Jestjs和Angular 测试

w7t8yxp5  于 2023-03-16  发布在  Jest
关注(0)|答案(1)|浏览(154)

我有一个方法,在选择组件发生变化时调用,这个方法是公共的,它所做的就是调用另外两个私有方法。
这个私有方法的每个方法都填充一个由rxjs观察的变量,所以我需要创建一个测试,它进入公共方法和两个私有方法,第一个测试返回每个方法一个列表来填充变量,另一个测试返回一个catcherror的of([ ])。
在这些私有方法中,我使用管道,因为我的服务已经有了一个错误拦截器。

以下是变量::

free$: Observable<ILista[]> | null = null;
grant$: Observable<ILista[]> | null = null;

一般方法如下:

listagemgeral(event: number) {
    this.disponiveis(event);
    this.concedidas(event);
  }

下面是填充free$变量的私有方法:

private disponiveis(iduser: number) {
    this.free$ = this.service.listarDisponiveis(iduser).pipe(
      catchError(() => {
        return of([]);
      })
    );
  }

下面是填充变量grant$的私有方法:

private concedidas(iduser: number) {
    this.grant$ = this.service.listarConcedidos(iduser).pipe(
      catchError(() => {
        return of([]);
      })
    );
  }
6jygbczu

6jygbczu1#

您必须监视服务以检查是否使用预期的参数调用了它。

let service = TestBed.Inject(YourService)
const spy1 = jest.spyOn(service, 'listarConcedidos').mockReturnValue(of([]))
component.listagemgeral(7);
expect(spy1 ).toHaveBeenCalledWith(7);

相关问题