如何在Jest的同一测试文件中的不同测试中以不同的方式模拟模块?

外星人

目前我有这个:

jest.mock('my/hook', () => () => false)

我希望我的自定义React挂钩模块false默认情况下在每个测试中都返回,但是在一些测试中,我希望它返回true。

挂钩基本上是这样实现的:

function useMyHook(key) {
  switch (key) {
    case 'foo':
    case 'bar':
      return true
    default:
      return false
  }
}

我在组件中多次使用了钩子,一次用于foo密钥,一次用于bar密钥。我希望它默认为两个键返回false。

但是对于一些测试,我希望foo键返回true,对于其他测试,我希望bar键返回true。

我通过在特定测试中执行此操作来尝试了此操作,但它没有执行任何操作:

it('should do x', () => {
  jest.doMock('my/hook', () => (key) => {
    if (key == 'foo') {
      return true
    }
  })
  // ... rest of test
})

如何在Jest中按测试自定义模块模拟?

那将是烧瓶

jest.doMock一个人不能做任何事情,因为依赖它的模块早已导入。之后应重新导入,并使用jest.resetModules丢弃模块缓存jest.isolateModules

beforeEach(() => {
  jest.resetModules();
});

it('should do x', () => {
  jest.doMock('my/hook', ...)
  require('module that depends on hook');
  // ... rest of test
})

因为它是一个需要不同模拟的函数,所以更好的方法是使用Jest间谍而不是普通函数模拟实现:

jest.mock('my/hook', () => jest.fn(() => false))
...
it('should do x', () => {
  hook.mockReturnValueOnce(true);
  // ... rest of test
})

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在每个测试中以不同的方式模拟用户模块?

来自分类Dev

如何在RSPEC中多次重用同一测试

来自分类Dev

如何重用相同的函数,但在同一测试脚本中从 python 中的不同位置调用它

来自分类Dev

用Jest无法模拟常量(同一测试文件中有多个模拟)

来自分类Dev

用Jest无法模拟常量(同一测试文件中有多个模拟)

来自分类Dev

如何在同一测试中更新最近添加的实体实例?

来自分类Dev

如何在Testlink配置副中多次执行同一测试用例

来自分类Dev

Rspec Rails的行为怪异(同一测试的不同输出)

来自分类Dev

Rspec Rails的行为怪异(同一测试的不同输出)

来自分类Dev

在同一测试中模拟对相同功能的两个单独响应

来自分类Dev

如何从模块中为特定测试模拟特定功能(Jest)

来自分类Dev

我应该在同一测试中测试从Im测试方法调用的方法吗?

来自分类Dev

使用Ruby和Minitest,如何使用仅由列表控制的不同数据运行同一测试用例

来自分类常见问题

如何使用Jest模拟同一模块中的函数

来自分类Dev

如何在不同的测试组中测试我的API调用?

来自分类Dev

如何在同一个 CorDapp 中测试两个不同的响应程序流?

来自分类Dev

使用Robotium Recorder在同一文件中运行不同的测试脚本

来自分类Dev

使用Robotium Recorder在同一文件中运行不同的测试脚本

来自分类Dev

是否可以在同一测试文件中混合使用jqwik @Property方法和junit5 @Test方法?

来自分类Dev

有没有办法在 Jest 的同一个测试文件中测试模拟函数和实际函数?

来自分类Dev

如何在OSGi中的不同包中扩展测试类

来自分类Dev

如何在 vscode 中为测试文件使用不同的 tsconfig 文件?

来自分类Dev

JMockit + Guice:@Tested和Guice可以在同一测试类中混合吗?

来自分类Dev

茉莉花2.0异步完成()和角-inject()在同一测试中它()

来自分类Dev

如何在功能测试中模拟文件副本

来自分类Dev

如何在JavaScript中模拟大文件以进行测试?

来自分类Dev

如何在测试文件中模拟磁盘分区坏块?

来自分类Dev

如何在同一标签中以编程方式涉及动态文本提供不同的字体颜色

来自分类Dev

如何在python的同一程序中以不同方式打印文本?

Related 相关文章

  1. 1

    如何在每个测试中以不同的方式模拟用户模块?

  2. 2

    如何在RSPEC中多次重用同一测试

  3. 3

    如何重用相同的函数,但在同一测试脚本中从 python 中的不同位置调用它

  4. 4

    用Jest无法模拟常量(同一测试文件中有多个模拟)

  5. 5

    用Jest无法模拟常量(同一测试文件中有多个模拟)

  6. 6

    如何在同一测试中更新最近添加的实体实例?

  7. 7

    如何在Testlink配置副中多次执行同一测试用例

  8. 8

    Rspec Rails的行为怪异(同一测试的不同输出)

  9. 9

    Rspec Rails的行为怪异(同一测试的不同输出)

  10. 10

    在同一测试中模拟对相同功能的两个单独响应

  11. 11

    如何从模块中为特定测试模拟特定功能(Jest)

  12. 12

    我应该在同一测试中测试从Im测试方法调用的方法吗?

  13. 13

    使用Ruby和Minitest,如何使用仅由列表控制的不同数据运行同一测试用例

  14. 14

    如何使用Jest模拟同一模块中的函数

  15. 15

    如何在不同的测试组中测试我的API调用?

  16. 16

    如何在同一个 CorDapp 中测试两个不同的响应程序流?

  17. 17

    使用Robotium Recorder在同一文件中运行不同的测试脚本

  18. 18

    使用Robotium Recorder在同一文件中运行不同的测试脚本

  19. 19

    是否可以在同一测试文件中混合使用jqwik @Property方法和junit5 @Test方法?

  20. 20

    有没有办法在 Jest 的同一个测试文件中测试模拟函数和实际函数?

  21. 21

    如何在OSGi中的不同包中扩展测试类

  22. 22

    如何在 vscode 中为测试文件使用不同的 tsconfig 文件?

  23. 23

    JMockit + Guice:@Tested和Guice可以在同一测试类中混合吗?

  24. 24

    茉莉花2.0异步完成()和角-inject()在同一测试中它()

  25. 25

    如何在功能测试中模拟文件副本

  26. 26

    如何在JavaScript中模拟大文件以进行测试?

  27. 27

    如何在测试文件中模拟磁盘分区坏块?

  28. 28

    如何在同一标签中以编程方式涉及动态文本提供不同的字体颜色

  29. 29

    如何在python的同一程序中以不同方式打印文本?

热门标签

归档