the*_*ben 5 unit-testing jestjs
我正在尝试使一个名为loadFixtures的函数可用于所有Jest测试。
我在package.json内的jest config对象内有以下一行:
"globalSetup": "<rootDir>/src/test/js/config/setup-globals.js"
Run Code Online (Sandbox Code Playgroud)
setup-globals.js包含:
module.exports = function() {
function loadFixtures(filename) {
console.info('loadFixtures is working');
}
}
Run Code Online (Sandbox Code Playgroud)
在我的测试中,例如:
beforeEach(() => {
loadFixtures('tooltip-fixture.html');
});
Run Code Online (Sandbox Code Playgroud)
但是,当我运行Jest时,每次测试都会得到以下结果:
ReferenceError: loadFixtures is not defined
Run Code Online (Sandbox Code Playgroud)
我验证了Jest在执行测试之前肯定已找到setup-globals.js文件并将其加载。
谁能协助您确定我在哪里出了问题?我花了整整一天的时间尝试调试,但没有运气。
您应该使用setupFiles而不是globalSetup。
// jest config
"setupFiles": [
"<rootDir>/src/test/js/config/setup-globals.js"
]
Run Code Online (Sandbox Code Playgroud)
然后src/test/js/config/setup-globals.js:
global.loadFixtures(filename) {
console.info('loadFixtures is working');
}
Run Code Online (Sandbox Code Playgroud)
参考:https : //medium.com/@justintulk/how-to-mock-an-external-library-in-jest-140ac7b210c2
如果您使用npx create-react-app(CRA)引导应用程序,则无需在文件中的setupFiles密钥下添加密钥(CRA 可防止覆盖该密钥)。jestpackage.json
您只需要做的是将文件添加到文件夹setupTests.js的根SRC目录中,并使用以下代码段填充它:
import { configure } from 'enzyme';
import Adapter from 'enzyme-adapter-react-16';
configure({
adapter: new Adapter(),
});
Run Code Online (Sandbox Code Playgroud)
请记住,您之前必须安装了正确版本的
enzyme和enzyme-adapter-react
CRA 已连接到自动加载setupTests.js文件src夹中的文件(如果存在)。因此,在添加这些之后,您可以继续进行测试并且import {shallow} from enzyme不会触发错误。
如果您不使用Create-react-app,除了将上面的src文件添加到您的文件夹之外,您需要做的就是将密钥添加setupFiles到jest您的 package.json 中的密钥中。它应该是这样的:
"jest": {
"setupFiles": ['<rootDir>/src/setupTests.js'],
}
Run Code Online (Sandbox Code Playgroud)
你很高兴去。
干杯!
| 归档时间: |
|
| 查看次数: |
4610 次 |
| 最近记录: |