如何在玩笑中处理外部组件中的全局 jquery

How to handle global jquery in external components in jest

我需要测试 React 组件,这些组件依赖于一些需要全局 jquery 实例的遗留代码。通过我们的 webpack/karma/mocha 设置,我们可以这样设置:

new webpack.ProvidePlugin({'$':'jquery' })

有没有办法为笑话做同样的事情?

我完全知道在我的测试中模拟出依赖关系,但我正在寻找更通用的解决方案。那么有没有一种方法可以将 Jest 与 webpack 一起使用以获得相同的行为。

最简单的方法就是像这样覆盖它:

const ajax = jest.fn((options) => {
  if (/\/successPath/.test(options.url)) {
    return options.success('someData', '', { status: 200 });
  }
  return options.error({ status: 404, responseText: 'someError' });
});
global.$ = { ajax: ajax };

因此,只需将其替换为仅包含您需要在模块中使用的功能的模拟即可。