我想用JEST测试我的API的响应.

这是来自控制器的方法

  @Post('send-banana')
  async sendBanana(
    @Body() request: BananaRequest,
    @Res() res: Response,
  ) {
    const responseCodeService = await this.bananaService.sendBanana(
      request,
    )

    res.status(responseCodeService).send({
      code: responseCodeService,
      message: HttpStatus[responseCodeService],
    })
  }

这是一场考验

  describe('Banana Controller', () => {
    fit('should return httpcode(201)', async () => {
      const result = await Promise['']

      const request = {
        origin: 'dummy origin',
        receiver: 'dummy@dummy',
        data: {
          name: 'Elsa Pallo',
        },
      } as BananaRequest

      const response = jest.fn((resObj) => ({
        status: jest.fn((status) => ({
          res: { ...resObj, statusCode: status },
        })),
      }))

      jest
        .spyOn(bananaService, 'sendBanana')
        .mockImplementation(() => result)

      expect(
        await bananaController.sendBanana(request, response),
      ).toBe(result)
    })
  })

这就是我得到的错误

enter image description here

有人能指导我如何模仿他们的react 吗?

推荐答案

您需要模拟如下响应:

const statusResponseMock = {
        send: jest.fn((x) => x),
      }
    
      const responseMock = {
        status: jest.fn((x) => statusResponseMock),
        send: jest.fn((x) => x),
      } as unknown as Response

Typescript相关问答推荐

如何推断哪个特定密钥与泛型匹配?

如何设置绝对路径和相对路径的类型?

如何在TypeScript中将一个元组映射(转换)到另一个元组?

获取函数中具有动态泛型的函数的参数

在HighChats列时间序列图中,十字准线未按预期工作

不带其他属性的精确函数返回类型

有没有可能创建一种类型,强制在TypeScrip中返回`tyPeof`语句?

如何在脚本中输入具有不同数量的泛型类型变量的函数?

如何连接属性名称和值?

为什么TS2339;TS2339;TS2339:类型A上不存在属性a?

如何在Reaction 18、Reaction-Rout6中的导航栏中获取路由参数

KeyOf关键字在特定示例中是如何工作的

Angular 16:无法覆盖;baseUrl;在tsconfig.app.json中

为什么我无法在 TypeScript 中重新分配函数?

如何在故事书的Typescript 中编写decorator ?

如何在react-router-dom v6中捕获pop事件

使用接口属性作为同一接口中另一个属性的数组长度

为什么 TypeScript 认为变量可以是未定义的,而实际上它不能?

在 React 中将 useState setter 函数公开到全局范围

React:如何在子组件中使用前向引用中的数据