Jest globalSetup选项不起作用

时间:2018-03-16 17:06:12

标签: unit-testing jestjs

我正在尝试为所有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

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

有人可以协助确定我在哪里出错吗?我花了大约一整天的时间试图调试,没有运气。

2 个答案:

答案 0 :(得分:2)

您应该使用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

答案 1 :(得分:0)

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

您只需要做的就是将文件setupTests.js添加到SRC文件夹的根目录中,并用下面的代码片段填充它:


import { configure } from 'enzyme';
import Adapter from 'enzyme-adapter-react-16';

configure({
  adapter: new Adapter(),
});
  

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

已连接CRA以自动将setupTests.js文件夹中的src文件加载到文件中。因此,在添加了这些内容之后,您就可以进行测试并进行import {shallow} from enzyme而不会触发错误。

如果您不使用Create-react-app,除了将以上文件添加到src文件夹之外,您还需要做的就是将密钥setupFiles添加到{{1 }}输入您的package.json。它应该看起来像这样:

jest

你很好。

干杯!