模拟 URLSeachParams

Mah*_*n M 5 reactjs jestjs enzyme

我们jest用于嘲讽。enzyme用于在我们的应用程序中呈现。

在这里,我试图模拟URLSearchParamsget方法。

我试着用

jest.spyOn(URLSearchParams, 'get'); 
Run Code Online (Sandbox Code Playgroud)

但它不起作用。

我的反应课看起来像波纹管

export default class Concepts extends React.Component {
  static getDerivedStateFromProps(props) {
  const searchParams = new URLSearchParams(props.search);
  return {
     keyword: searchParams.get('q')
   };
}
Run Code Online (Sandbox Code Playgroud)

我的测试如下所示

it('should be able to change the state', () => {
  jest.spyOn(URLSearchParams, 'get');
  const wrapper = mount(
        <Concepts search="test" />
   );
});
Run Code Online (Sandbox Code Playgroud)

这是正确的方法吗?还有其他方法可以做到吗?提前致谢 :)

man*_*tin 10

你有嘲笑getURLSearchParams.prototype,如:

jest.spyOn(URLSearchParams.prototype, 'get').mockImplementation((key) => key);
Run Code Online (Sandbox Code Playgroud)


Ray*_* Pk 6

尝试这个!

jest.spyOn(URLSearchParams.prototype, "get").mockReturnValue("some value");
Run Code Online (Sandbox Code Playgroud)


Mel*_*hia 5

这是我模拟URLSearchParams的解决方案

global.URLSearchParams = jest.fn(x => ({
  get: jest.fn(y => x.includes(y) ? 'url does contain get parameter' : 'url does not contain get parameter'),
}));
Run Code Online (Sandbox Code Playgroud)