【问题标题】:Jest globalSetup option not working开玩笑 globalSetup 选项不起作用
【发布时间】:2018-08-25 20:05:59
【问题描述】:

我正在尝试为所有 Jest 测试提供一个名为 loadFixtures 的函数。

我在 package.json 中的 jest 配置对象中有以下行:

"globalSetup": "<rootDir>/src/test/js/config/setup-globals.js"

setup-globals.js 包含:

module.exports = function() {
    function loadFixtures(filename) {
        console.info('loadFixtures is working');
    }
}

在我的测试中,例如:

beforeEach(() => {
    loadFixtures('tooltip-fixture.html');
});

但是,当我运行 Jest 时,每次测试都会得到以下结果:

ReferenceError: loadFixtures is not defined

我验证了 setup-globals.js 文件肯定是在测试执行之前被 Jest 找到并加载的。

任何人都可以帮助确定我在这里出错的地方吗?我花了几乎一整天的时间尝试调试,但没有运气。

【问题讨论】:

    标签: unit-testing jestjs


    【解决方案1】:

    您在不同的范围内定义一个函数。您如何创建一个单独的模块并将其直接导入您的测试文件中。或者,如果您真的想在全局范围内定义它,请尝试在您的 setup-globals.js 文件中使用以下代码。

    module.exports = function() {
        global.loadFixtures = function(filename) {
            console.info('loadFixtures is working');
        }
    }
    

    【讨论】:

      【解决方案2】:

      如果您使用 npx create-react-app (CRA) 引导应用程序,则无需在 package.json 文件中的 jest 键下添加 setupFiles 键(CRA 防止覆盖该键)。

      您只需将文件setupTests.js 添加到您的SRC 文件夹的根目录中,并使用下面的sn-p 填充它:

      
      import { configure } from 'enzyme';
      import Adapter from 'enzyme-adapter-react-16';
      
      configure({
        adapter: new Adapter(),
      });
      

      请记住,您之前必须安装正确版本的enzymeenzyme-adapter-react

      CRA 已连接到自动加载src 文件夹中的setupTests.js 文件(如果存在)。因此,添加这些之后,您可以继续进行测试并执行import {shallow} from enzyme 而不会触发错误。

      如果您不使用Create-react-app,除了将上面的文件添加到您的src 文件夹之外,您需要做的就是将密钥setupFiles 添加到您的package.json 中的jest 密钥中.它应该是这样的:

      "jest": {
          "setupFiles": ['<rootDir>/src/setupTests.js'],
        }
      

      你可以走了。

      干杯!

      【讨论】:

        【解决方案3】:

        您应该使用setupFiles 而不是globalSetup

        // jest config
        "setupFiles": [
          "<rootDir>/src/test/js/config/setup-globals.js"
        ]
        

        然后src/test/js/config/setup-globals.js:

        global.loadFixtures(filename) {
          console.info('loadFixtures is working');
        }
        

        参考:https://medium.com/@justintulk/how-to-mock-an-external-library-in-jest-140ac7b210c2

        【讨论】:

          猜你喜欢
          • 2016-11-11
          • 2018-10-13
          • 2023-01-07
          • 1970-01-01
          • 2018-04-29
          • 2021-06-11
          • 2021-07-13
          • 2017-09-26
          • 1970-01-01
          相关资源
          最近更新 更多