我已经创建了一个库,它导出包含一些实用函数的默认对象。除了默认,我还导出了几个枚举。下面是我的导出在库的根文件中的样子
exports.default = new _oAuth2.default();
var OAUTH_LOG_LEVELS = exports.LOG_LEVELS = {DEBUG: 10, WARN: 20};
var OAUTH_VERSIONS = exports.VERSIONS = {V1: '1.0', v2: '2.0'}在我的react应用程序中,我像这样导入和使用值
import lib1, {VERSIONS, LOG_LEVELS} from 'mylib';
lib1.init({
verion: VERSIONS.V1,
})在应用程序中一切运行正常。这是我的模仿
jest.mock('myLib', () => ({
init: jest.fn(),
}));现在,我的问题是,如何模拟该库以包含枚举和默认值?我尝试了多种方法,但都没有成功。否则,我就不能使用库公开的枚举。当我尝试使用它时,单元测试抛出了一个未定义版本的错误。
发布于 2020-06-02 08:27:30
使用jest.requireActual获取实际导出的值,并仅覆盖您需要的值。
jest.mock('myLib', () => ({
...jest.requireActual('myLib'),
init: jest.fn(),
}));根据您设置导出的方式,您可能需要类似于...jest.requireActual('myLib').default的内容。
发布于 2020-06-02 23:34:41
在深入研究Jest文档之后,我找到了一种显式地将该库模拟为esModule的方法。我将我的mock更新为
jest.mock('myLib', () => ({
__esModule: true,
default: {
init: jest.fn(),
},
VERSIONS: {V1: '1.0'},
}));这解决了我的问题。
https://stackoverflow.com/questions/62142496
复制相似问题