我在我的React组件say(SampleComponent.js)中使用“ react-device-detect” npm包中的isMobileOnly
。
我想在玩笑的单元测试中自定义isMobileOnly
的返回值。
我尝试了Jest手动模拟,如下面的链接所述: https://jestjs.io/docs/en/manual-mocks
但是它似乎对我不起作用。
我也尝试过: 开玩笑的模仿 开玩笑的嘲笑 开玩笑的间谍
import {isMobileOnly} from 'react-device-detect;
在开玩笑的单元测试中,我想模拟函数isMobileOnly
,使我应该能够将其返回值定制为“ true”。默认值为“ false”。
答案 0 :(得分:1)
这对我有用。
在您的测试文件中,添加:import * as deviceDetect from 'react-device-detect';
然后您可以更改以下内容:deviceDetect.isMobileOnly = true;
例如
import * as deviceDetect from 'react-device-detect'; //<--important
it.only('clicking on myAccount redirects to /user/myAccount', () => {
///make sure this is before mount or shallow
deviceDetect.isMobileOnly = true; //<--important
component = mount(<Provider store={store}><Sidebar history={mockedHistory} /></Provider>);
component.find('[test-id="myAccount"]').first().simulate('click');
expect(mockedHistory.push).toHaveBeenCalledWith('/user/myAccount');
});
答案 1 :(得分:0)
答案 2 :(得分:0)
最后!经过数小时的努力,我自己弄清楚了。这是我所做的:
__mocks__
文件夹中创建。注意:小写对__mocks__
很重要。__mocks__
文件夹中创建了一个名为“ react-device-detect.js”的文件。在其中添加了以下代码:
const deviceDetect = jest.genMockFromModule('react-device-detect');
deviceDetect.isMobileOnly = true;
module.exports = deviceDetect;
在测试文件中,我像在原始文件中那样导入了“ isMobileOnly” 组件:
import { isMobileOnly } from 'react-device-detect';
有关更多详细信息,请在此处https://jestjs.io/docs/en/manual-mocks
查阅官方文档。感谢@Roman伸出援手!