为了账号安全,请及时绑定邮箱和手机立即绑定

等待后如何测试数据

等待后如何测试数据

哈士奇WWW 2022-12-09 19:42:10
我正在尝试添加一个测试来测试以下代码部分,但我不确定如何,因为输出显示60-109未发现行。它看起来像这样:public async ngOnInit() {  const data = await this.requestAppService.getData()  this.tableModel =  { // Line 60    ...this.tableModel,    rows: data.map(      /*      * Map data      */    )  }  this.subscriptions.push(    /* Add a subscription */  )  // Line 109}我正在使用的测试如下所示:it('...', fakeAsync(() => {  const spy = spyOn(component, 'ngOnInit').and.callThrough()  component.ngOnInit()  tick()  expect(spy).toHaveBeenCalled()}))这只是我认为我应该如何测试它的猜测,但它似乎并没有涵盖所有内容。我也试过了callFake,也没用。it('...', fakeAsync(() => {  const spy = spyOn(component, 'ngOnInit').and.callFake(() => Promise.resolve())  component.ngOnInit()  tick()  expect(spy).toHaveBeenCalled()}))
查看完整描述

1 回答

?
吃鸡游戏

TA贡献1829条经验 获得超7个赞

问题在于spyOn声明。你在监视ngOnInit功能。您必须监视服务的 getData功能。


requestAppService如下所示注入和使用实例,


it('...', fakeAsync(() => {

  const spy = spyOn(requestAppService, 'getData').and.callThrough()

  component.ngOnInit()

  tick()

  expect(spy).toHaveBeenCalled()

}))

或者


如果你想getData给你一些模拟data或promise,


it('...', fakeAsync(() => {

      const spy = spyOn(requestAppService, 'getData').and.callFake(() => {

      return new Promise((resolve) => {

        resolve(YOUR_OBJECT);

      });

      component.ngOnInit()

      tick()

      expect(spy).toHaveBeenCalled()

 })) 


查看完整回答
反对 回复 2022-12-09
  • 1 回答
  • 0 关注
  • 98 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信