返回

'Promise<unknown>' 类型的参数不可分配给 'void'.ts(2345) 类型的参数 - mockReturnValueOnce

发布时间:2022-05-06 22:41:31 289

mockReturnValueOnce方法显示'Promise' 类型的参数不可分配给 'void'.ts(2345) 类型的参数。

我已经尝试过这样的:

jest.spyOn(bcrypt, 'compare').mockImplementation(() => Promise.resolve(false))

查看此类型错误:mockReturnValueOnce from jest.spyOn() inferring argument type as void类似问题,但没有效果。

我注意到vscode由于某种原因在方法参数中推断出void,但我仍然没有弄清楚为什么

方法签名: https ://i.stack.imgur.com/6dvMY.png

这很奇怪,因为我已经在另一个文件中模拟了另一个类并且它起作用了:

jest.spyOn(encrypterStub, 'encrypt').mockReturnValueOnce(new Promise((resolve, reject) => reject(new Error())))
jest.mock('bcrypt', () => ({
  async hash (): Promise {
    return new Promise((resolve) => resolve('hash'))
  }
}))

const salt = 12

const makeSut = (): BcryptAdapter => {
  return new BcryptAdapter(salt)
}

describe('Bcrypt Adapter', () => {
  test('Should call bcrypt with correct values', async () => {
    const sut = makeSut()
    const hashSpy = jest.spyOn(bcrypt, 'hash')
    await sut.encrypt('any_value')
    expect(hashSpy).toHaveBeenCalledWith('any_value', salt)
  })

  test('Should return a hash on sucess', async () => {
    const sut = makeSut()

    const hash = await sut.encrypt('any_value')
    expect(hash).toBe('hash')
  })

  test('Should throw if bcrypt throws', async () => {
    const sut = makeSut()
    jest
      .spyOn(bcrypt, 'hash')
      .mockReturnValueOnce(
        // here
        new Promise((resolve, reject) => reject(new Error()))
      )

    const promise = await sut.encrypt('any_value')
    await expect(promise).rejects.toThrow()
  })
})


特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报
评论区(0)
按点赞数排序
用户头像
相关帖子