用Jest模拟带有嵌套函数的模块

问题描述

我有一个像下面这样嘲笑的模块,我想更改每个测试的create返回值。

jest.mock('UserModule',() => {
  return {
    User: jest.fn().mockImplementation(() => {
      return {
        profile: {
          create: jest.fn().mockImplementation(() =>
            Promise.resolve({
              json: () => Promise.resolve({ test: 'ok' }),ok: true,})
          ),},}
    }),}
})

这将被称为new UserModule.User(),并在其上调用profile.create()

如何做到这一点,以便可以在每次测试时即时切换create实现?如果我在describe以外声明它,则该方法适用于一个测试,并且不确定如何在内部动态切换它。

我尝试将整个模拟程序放入每个测试中,但这没有用,在这种情况下,似乎好像根本没有模拟该函数。

  it('Should return true is response is ok',async () => {
      const response = await call('1234')
  })

注意:我上面的调用函数会导入UserModule并进行调用

let userLib = new UserModule.User()
let response = await userLib.profile.create()

谢谢!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...