将常见的模拟代码移动到包含Jest手动模拟的单独文件中

隆尼克斯

我在许多地方都使用了一个模拟程序,因此我想将其移动到一个可重用的单独文件中。

我认为Jest将此称为“手动模拟”。但是我不想使用__mocks__约定。

被测试文件的顶部:

import * as dotenvSafe from "dotenv-safe";

手动模拟文件:

const dotenvSafe: any = jest.genMockFromModule("dotenv-safe");

dotenvSafe.load = jest.fn(() => {     // the function I want to mock
  return {
    error: undefined,
    parsed: [],
  };
});

export default dotenvSafe;

在测试文件的顶部,我尝试了各种操作:

  1. jest.setMock("dotenv-safe", "../../mocks/dotenv-safe");
    不起作用 被测试的代码获取"../../mocks/dotenv-safe.mock"而不是模块。

  2. jest.mock("dotenv-safe", () => require("../../mocks/dotenv-safe"));
    不起作用-被测试的代码抛出TypeError: dotenvSafe.load is not a function

  3. jest.mock("dotenv-safe", () => { return { load: jest.fn(() => ({error: undefined, parsed: []})) }; });
    确实有效!但是该模拟是内联的,我想将其移动到单独的文件中。我不想在每个文件中重复此操作。

正确的语法是什么?

那将是烧瓶

require("../../mocks/dotenv-safe")等于模块导出。使用的是默认导出,因此应为:

jest.mock("dotenv-safe", () => require("../../mocks/dotenv-safe").default);

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

PWA app.js 如何将代码移动到许多较小的文件中

手动模拟不适用于Jest

gRPC的Jest模拟失败,并带有手动定义

当我将Javascript函数从内联代码移动到单独的js文件时,出现“函数未定义”的信息

清除手动模拟是

将Draw()代码移动到类

如何从Jest手动模拟中检查默认导出功能

如何将手动版本化的文件移动到git(版本控制)?

如何使用 jest 和酶导入带有模拟数据的手动模拟模块?

在R中手动模拟泊松过程

如何在测试中手动模拟Svg?

将nodejs MongoDB连接代码移动到另一个文件

无法将代码移动到Polymer组件

我可以将getInitialProps代码移动到componentDidMount吗?

如何将按钮创建代码移动到样式中

将 xaml.cs 后面的代码移动到 xamarin 中的 ViewModel

更改手动模拟服务中特定功能的模拟实现

将邮件手动移动到指定文件夹后,在Outlook中发送自动回复

使用Jest手动模拟React-Intl进行快照测试

如何使用 __mocks__ 文件夹中的模拟文件在 ES6 类中手动模拟方法?

如果pom在多个目录中(A / B / C / pom.xml),则在将源代码移动到Gitlab之后,Jenkins没有调用正确的POM文件。

试图将 e2e 代码移动到一个函数中但没有成功

R中的马尔可夫链的手动模拟(2)

如何模拟在提供程序私有函数中手动注入的$ window?

有没有办法模拟pojo,然后在模仿中手动设置值?

开玩笑:在手动模拟中恢复原始模块的实现

手动模拟未被拾取

如何手动下载/降级Android模拟器

使用__mocks__手动模拟无法正常工作