javascript - 在 enzyme 中模拟 history.back()

标签 javascript jestjs enzyme

对于 react 组件测试,我需要模拟浏览器返回。对于已安装的组件,这可能吗?

我尝试过的:

it('triggers onpopstate events', () => {
   requiredProps.filterBlocks = mockData.filterBlocks;

   const wrapper = mount(<FilterBlocks {...requiredProps} />);

   global.window.history.pushState({ mock: 'MOCK'}, "mock", "mock.html");
   global.window.history.pushState({ mock: 'MOCK2'}, "mock", "mock2.html");

   global.window.history.back();


   expect(mockedFunction).toHaveBeenCalled();
})

在组件 (componentDidMount) 中我有一个 window.onpopstate 监听器:

window.onpopstate = event => {
    console.log('event', event);
};

但控制台不会记录任何内容。

最佳答案

对于我的测试,我手动触发了 onpopstate:

const testEvent = { target: "mock" };

global.window.onpopstate(testEvent);

关于javascript - 在 enzyme 中模拟 history.back(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51536037/

相关文章:

javascript - 使用 Javascript 中的 POST 方法在 Servlet 中获取 JSON 数据不起作用

typescript - 使用 Typescript 和 Jest 添加 i18n,出现 "All files must be modules when the ' --isolatedModules 错误”

reactjs - 用 enzyme 和 Jasmine 测试高阶成分

reactjs - _this.store.getState 在使用 enzyme 和 Mocha 测试 react 组件时不是函数

javascript - jQuery 扩展,无法读取未定义的属性

javascript - 在嵌套树中定位元素 - JavaScript

javascript - 有没有办法使用 Jest toHaveBeenCalledWith 来检查参数数组长度?

reactjs - Typescript Reactjs Jest/ enzyme 错误 - 'Type ' 任何 []' is missing the following properties...'

javascript - 从引导扩展绘制 UI 覆盖

javascript - 用Enzyme/Jest模拟点击测试不调用Sinon Spy