在我的应用程序中,外部文件中有一个全局变量
const Translate = {
trans: () => {... some code}
}
我在我的React组件中使用它
const title = Translate.trans('title');
在我的Component.test.js中
import React from 'react';
import Enzyme, { shallow } from 'enzyme';
import toJson from 'enzyme-to-json';
import Adapter from 'enzyme-adapter-react-16';
import Component from '../Component';
Enzyme.configure({ adapter: new Adapter() });
describe('Component Snapshot Tests', () => {
it('renders default Component correctly', () => {
const wrapper = shallow(<Component />);
expect(toJson(wrapper)).toMatchSnapshot();
});
});
afterEach(() => {
global.Translator.trans = jest.fn(() => 'test text');
});
出现错误:
“类型错误:转换器.trans不是函数”
玩笑设置
"jest": {
"verbose": true,
"rootDir": "./src",
"globals": {
"Translator": true
}
}
如何更好地模拟全局变量的笑话?谢谢!
2条答案
按热度按时间wpcxdonn1#
这里是解决方案,没有必要设置jest配置。
index.ts
:Translate.ts
:单元测试:
包含覆盖率报告的单元测试结果:
以下是完整的演示:https://github.com/mrdulin/jest-codelab/tree/master/src/stackoverflow/47412169
nukf8bse2#
这里有一种方法可以在Jest中全局模拟变量/函数:
mockTranslate.js
然后在您的
jest.config.js
中将其包含在setupFiles
中: