我正在尝试为所有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文件。
有人可以协助确定我在哪里出错吗?我花了大约一整天的时间试图调试,没有运气。
答案 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(),
});
请记住,您必须早先安装正确版本的
enzyme
和enzyme-adapter-react
已连接CRA以自动将setupTests.js
文件夹中的src
文件加载到文件中。因此,在添加了这些内容之后,您就可以进行测试并进行import {shallow} from enzyme
而不会触发错误。
如果您不使用Create-react-app
,除了将以上文件添加到src
文件夹之外,您还需要做的就是将密钥setupFiles
添加到{{1 }}输入您的package.json。它应该看起来像这样:
jest
你很好。
干杯!