开玩笑"开玩笑.嘲笑(...不会覆盖原始文件



所以我设置了与文档中完全相同的mock(尽管我需要和使用导入的文档,但这应该不是问题所在(

jest.mock('common-bon/lib/utils/events/EventDomains');
const EventDomains = require('common-bon/lib/utils/events/EventDomains');
...
beforeAll(()=>{
EventDomains.mockImplementation(() => {
return {
app: 'Placeholder'
};
});
});

这正是他们在这里的做法:https://jestjs.io/docs/en/es6-class-mocks

但它不起作用。测试套件以终止

TypeError:EventDomains.mockImplementation不是函数

afaik的意思是嘲笑根本不起作用。

关于我需要mock的内容的上下文:*在源代码中,我调用的函数以结尾

handler.fireEvent(domain.app);

其中"域"是我想要模拟的:

const domain = EventDomains;
const EventDomains = require('common').utils.getEventDomains();

复杂的"路径"是我在jost.mock(…(中使用的,它适用于我不需要更改mockImplementation的其他mock

编辑:我知道"jost.mock(…("部分不起作用,因为当我将函数"mockImplementation"添加到原始文件中时,它运行得非常好。请注意,jest.mock以及.mockImplementation之前的require使用了完全相同的路径。require位于测试文件的顶部,.mockImplementation位于"beforeAll"中[尽管将其直接放在require下方并没有什么区别]

只需跳过".mockImplementation"部分

我的解决方案在测试文件中:

beforeAll(()=>{
EventDomains.app = 'placeholder'    
});

就是这样。不需要复杂的".mockImplementation"等。

最新更新