首页 > 解决方案 > 如何将 jest mockImplemention 用于默认导出模块?

问题描述

套餐:

因为根据测试我需要不同的模拟实现,所以我试图获得相当于

import Component from '../component.js'
jest.mock('../component.js', () => {
  return () => <div>Component</div>
});

如果工作,但这次使用 mockImplementation。

通过stackoverflow让我尝试了以下实现但没有成功:

jest.mock('../component.js')
Component.mockImplementation(() => {
  return {
    render: () => <div>MockComponent</div>
  };
});

或者

jest.mock('../component.js', () => jest.fn())
Component.mockImplementation(() => {
  return () => <div>Component</div>
});

或者

jest.mock('../component.js')
Component.mockImplementation(() => {
  return () => <div>Component</div>
});

我错过了什么?

标签: reactjsunit-testingmockingjestjs

解决方案


我会说你必须只返回一个函数,而不是返回一个返回函数的函数。我认为这样的事情应该可以解决问题:

jest.mock('../component.js')
Component.mockImplementation(() => <div>Component</div>);

推荐阅读