我有一个模块,它可以导出缺省值。
import { createNamespace } from 'node-request-context';
const namespace = createNamespace('request-metadata');
export default namespace;在另一个文件中需要此模块,如下所示:
....
import loggingContext from '../utils/loggingContext';
....
export function myFunc(data) {
return new Promise((resolve, reject) => {
......
loggingContext.run(() => {
loggingContext.set('metadata', {
userId
});
});
const userEmail = loggingContext.get('metadata', 'email');
});
}
...因此,我们可以看到loggingContext模块导出run、get和set方法。我想在我的单元测试中模拟它和那些方法,但是我一直收到一个错误:
TypeError: Cannot read property 'metadata' of undefined
这是我最近一次试图嘲弄它
import loggingContext from '../../src/utils/loggingContext';
jest.mock('../../src/utils/loggingContext', () => {
return {
__esModule: true,
default: {
run: jest.fn(),
get: jest.fn(),
set: jest.fn(),
}
};
});请告诉我怎么才能正确地模仿它?
发布于 2021-12-21 16:14:18
您可以尝试像这样模拟它,首先导入默认的导出模块。
const loggingContext = require('../../src/utils/loggingContext');然后使用jest.mock()模拟这个模块
jest.mock('../../src/utils/loggingContext');现在,您可以为这个模块编写预期的模拟实现,如下所示
const mockObject = {
run: jest.fn(),
get: jest.fn(),
set: jest.fn(),
}
loggingContext.mockImplementationOnce(() => mockObject);https://stackoverflow.com/questions/70436883
复制相似问题