笑话“ jest.mock(...)不会覆盖原始文件

时间:2019-11-11 10:24:21

标签: mocking jestjs

因此,我完全像在文档中一样设置了模拟程序(尽管我需要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”中(尽管将其直接置于需求之下并没有什么不同)

1 个答案:

答案 0 :(得分:0)

只需跳过“ .mockImplementation”部分!

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

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

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