我正在尝试建立一个集成测试,该测试将使用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
的建议注册数据服务。我觉得我已经很接近了,但是只需要朝正确的方向轻推一下,就能使其正常工作!
答案 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'
}
])
}
还有两件事对我来说可疑:
Observable
很冷。clientResolve.resolve({}, {})
调用期望将ActivatedRouteSnapshot
作为第一个参数。我对Resolve
界面不太熟悉,但是也许这也是一个问题。