[英]Enzyme, test a react component that uses useContext hook with shallow?
How do I test my component that uses jest and Enzyme with shallow and a react component that uses useContext hook.如何测试使用 jest 和 Enzyme 的组件以及使用 useContext 钩子的 react 组件。
How do I mock "pValue.state.fullLang"?如何模拟“pValue.state.fullLang”?
src\LanguageSelect.tsx src\LanguageSelect.tsx
import React, { useContext } from 'react'; import { LanguageContext } from './utils/LanguageHook'; function LanguageSelect() { const pValue: any = useContext(LanguageContext); return ( <div className="LanguageSelect" data-test="languageSelect-box"> <div className="languageArea">{pValue.state.fullLang}</div> </div> ); } export default LanguageSelect;
src\LanguageSelect.test.tsx src\LanguageSelect.test.tsx
import React from 'react'; import { shallow } from 'enzyme'; import LanguageSelect from './LanguageSelect'; test.only('that the LanguageSelect component exists', () => { jest.mock('react', () => { const ActualReact = require.requireActual('react'); return {...ActualReact, useContext: () => ({ state: { fullLang: 'mocked context' } }), }; }); const wrapper = shallow(<LanguageSelect />) expect(wrapper.find('[data-test="languageSelect-box"]').exists()).toBeTruthy() wrapper.unmount(); })
If you are testing that component in isolation then you can mock useContext
like this:如果您正在单独测试该组件,那么您可以像这样模拟useContext
:
jest.mock('react', () => {
const ActualReact = require.requireActual('react');
return {
...ActualReact,
useContext: () => ({ state: { fullLang: 'mocked context' } }),
};
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.