开玩笑地模拟一个toPromise函数.toPromise不是一个函数

我有一个来自nestjs / common的httpService

我正在使用如下所示:

const response = await this.httpService.post(`${this.api}/${action}`, data).toPromise();

并在我的jest spec文件中(单元测试)。我正在尝试嘲笑这项服务

   httpServiceMock = {
      post: jest.fn()
    };

it('should start', async () => {

    const serviceResult = await service.start(data);

});

我有这个错误:

TypeError: this.httpService.post(...).toPromise is not a function

我还试图添加一个承诺结果,例如:

 const promise = Promise.resolve('result');
 httpServiceMock.post.mockResolvedValue(promise);

也尝试过:

it('should start', async () => {

    const mockObservable = Promise.resolve({
        toPromise: () => {
          console.log('toPromise called');
        }
      })

    httpServiceMock.post.mockImplementation(() => mockObservable);

    const serviceResult = await service.start();

});

我的问题是我该如何嘲笑承诺并返回响应或异常

一罐黏土

返回值httpService.post需要返回,Observable<AxiosResponse<T>>其中包含属性toPromise,该属性是一个函数。您的模拟返回一个已解决的承诺,而它需要返回一个假的Observable。

Observable立即返回,因此post实现可以只返回原始值,但是toPromise需要返回承诺。

返回正确的形状对象以摆脱此错误:

const mockObservable = {
  toPromise: () => Promise.resolve('result')
}
httpServiceMock.post.mockImplementation(() => mockObservable);

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

用 Typescript 开玩笑地模拟一个库

来自分类Dev

开玩笑地对一个函数进行单元测试,该函数调用一个返回Promise的函数

来自分类Dev

开玩笑的自动模拟失败:TypeError:fs.readdirSync不是一个函数

来自分类Dev

Angular2-TypeError:this.http.get(...)。toPromise不是一个函数

来自分类Dev

开玩笑TypeError:configService.get不是一个函数

来自分类Dev

开玩笑的匹配器错误:接收到的值必须是一个函数

来自分类Dev

开玩笑抛出 TyperError:使用 lodash 管道/流时需要一个函数

来自分类Dev

开玩笑-一个功能模拟文件用于多个测试文件

来自分类Dev

TypeError:jQuery(...)。on不是一个函数

来自分类Dev

TypeError:this。$ set不是一个函数

来自分类Dev

ReactDnD:connectDragSource不是一个函数

来自分类Dev

TypeError:require(...)不是一个函数

来自分类Dev

this.getAttribute不是一个函数

来自分类Dev

TypeError:$(...)。datepicker不是一个函数

来自分类Dev

this.url不是一个函数

来自分类Dev

TypeError:* .getMonth不是一个函数

来自分类Dev

this.set不是一个函数

来自分类Dev

this.setState不是一个函数

来自分类Dev

TypeError:func(...)。then不是一个函数

来自分类Dev

反应typerror,不是一个函数

来自分类Dev

TypeError:$(...)。dialog不是一个函数

来自分类Dev

TypeError:$(...)。datepicker不是一个函数

来自分类Dev

jqBootstrapValidation不是一个函数

来自分类Dev

TypeError:$(...)。visualize不是一个函数

来自分类Dev

'find()`undefined不是一个函数

来自分类Dev

this.getAttribute不是一个函数

来自分类Dev

JSNI:undefiend不是一个函数

来自分类Dev

TypeError:require(...)不是一个函数

来自分类Dev

this.hasErrors不是一个函数

Related 相关文章

  1. 1

    用 Typescript 开玩笑地模拟一个库

  2. 2

    开玩笑地对一个函数进行单元测试,该函数调用一个返回Promise的函数

  3. 3

    开玩笑的自动模拟失败:TypeError:fs.readdirSync不是一个函数

  4. 4

    Angular2-TypeError:this.http.get(...)。toPromise不是一个函数

  5. 5

    开玩笑TypeError:configService.get不是一个函数

  6. 6

    开玩笑的匹配器错误:接收到的值必须是一个函数

  7. 7

    开玩笑抛出 TyperError:使用 lodash 管道/流时需要一个函数

  8. 8

    开玩笑-一个功能模拟文件用于多个测试文件

  9. 9

    TypeError:jQuery(...)。on不是一个函数

  10. 10

    TypeError:this。$ set不是一个函数

  11. 11

    ReactDnD:connectDragSource不是一个函数

  12. 12

    TypeError:require(...)不是一个函数

  13. 13

    this.getAttribute不是一个函数

  14. 14

    TypeError:$(...)。datepicker不是一个函数

  15. 15

    this.url不是一个函数

  16. 16

    TypeError:* .getMonth不是一个函数

  17. 17

    this.set不是一个函数

  18. 18

    this.setState不是一个函数

  19. 19

    TypeError:func(...)。then不是一个函数

  20. 20

    反应typerror,不是一个函数

  21. 21

    TypeError:$(...)。dialog不是一个函数

  22. 22

    TypeError:$(...)。datepicker不是一个函数

  23. 23

    jqBootstrapValidation不是一个函数

  24. 24

    TypeError:$(...)。visualize不是一个函数

  25. 25

    'find()`undefined不是一个函数

  26. 26

    this.getAttribute不是一个函数

  27. 27

    JSNI:undefiend不是一个函数

  28. 28

    TypeError:require(...)不是一个函数

  29. 29

    this.hasErrors不是一个函数

热门标签

归档