因此,我完全像在文档中一样设置了模拟程序(尽管我需要require和使用import的文档,但这不是afaik的问题)
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意味着模拟根本行不通。
关于我需要模拟的内容的上下文: *在我调用的函数的源代码中以
结尾 handler.fireEvent(domain.app);
其中“域”是我要模拟的:
const domain = EventDomains;
const EventDomains = require('common').utils.getEventDomains();
复杂的“路径”就是我在jest.mock(...)中使用的东西,它可用于其他不需要更改嘲笑的模拟对象
编辑:事实上,我知道这是“ jest.mock(...)”部分无法正常工作的原因,因为当我将函数“ mockImplementation”添加到原始文件中时,它工作得很好。 [请注意jest.mock以及.mockImplementation使用完全相同的路径之前的需求。 需求位于测试文件的顶部,.mockImplementation位于“ beforeAll”中(尽管将其直接置于需求之下并没有什么不同)
答案 0 :(得分:0)
只需跳过“ .mockImplementation”部分!
我的解决方案在测试文件中:
beforeAll(()=>{
EventDomains.app = 'placeholder'
});
就是这样。 不需要复杂的“ .mockImplementation”等。