设置ngrx /数据进行集成测试

时间:2020-04-04 20:34:42

标签: javascript angular ngrx ngrx-data

我正在尝试建立一个集成测试,该测试将使用ngrx / data实体从后端API服务中获取一些数据。

我已经设置了StackBlitz:https://stackblitz.com/edit/ngrxdata-testing-not-working-pxfmkb?file=src/main.ts

它应该在启动时运行测试-我的测试用例中没有期望,但是我正在控制台日志中查看并期望它在'ClientDataService)中显示日志,即:

/src/app/data/client/client-data.service.ts

在集成测试(data.integration.spec.ts)中,我正在配置模块,定义客户端实体类型,并包括console.log('never goes here :(');,依次执行以下操作:

AppDataServiceModule

如您所见,我正在按照ngrx文档here

的建议注册数据服务。

我觉得我已经很接近了,但是只需要朝正确的方向轻推一下,就能使其正常工作!

1 个答案:

答案 0 :(得分:1)

自定义DataService必须扩展DefaultDataService。应该看起来像这样:

export class ClientDataService extends DefaultDataService<Client> {

  constructor(
    http: HttpClient, httpUrlGenerator: HttpUrlGenerator
  ) {
    super('Client', http, httpUrlGenerator);
  }

  public getAll(): Observable<any> {
    // get Data here
  }
}

BackendService必须返回Observable:

public getClients(): Observable<Array<Client>> {
  // will be mocked
  return of([
    {
      id: '1: Will not return as it will be mocked'
    },
    {
      id: '2: Will not return as it will be mocked'
    }
  ])
}

还有两件事对我来说可疑:

  1. 代码中没有订阅,因此我假设您的Observable很冷。
  2. clientResolve.resolve({}, {})调用期望将ActivatedRouteSnapshot作为第一个参数。我对Resolve界面不太熟悉,但是也许这也是一个问题。