Reactjs 如何模拟作为函数调用响应返回的特定对象?

Reactjs 如何模拟作为函数调用响应返回的特定对象?,reactjs,unit-testing,jestjs,enzyme,Reactjs,Unit Testing,Jestjs,Enzyme,我有一个实现,我想模拟我创建的服务: this.device = major.get('alp").devC === 'devType'; 这发生在组件的构造函数中。我想在我的jest测试用例中模拟同样的情况,我所做的是: jest.spyOn(major, 'get').mockImplementation(() => { return { devC: 'devType2' }; }); 我检查了一下,可以看到我的代码在模拟中运行,并且正确返回

我有一个实现,我想模拟我创建的服务:

this.device = major.get('alp").devC === 'devType';
这发生在组件的构造函数中。我想在我的jest测试用例中模拟同样的情况,我所做的是:

jest.spyOn(major, 'get').mockImplementation(() => {
            return { devC: 'devType2' };
        });
我检查了一下,可以看到我的代码在模拟中运行,并且正确返回了值,但是当我运行测试用例时,我得到了未定义的devC


我通过在组件中放置日志进行检查,但在测试用例中测试失败,上面说明了相同的错误,但在控制台屏幕上正确打印了测试,测试正在使用watch运行

我想我找到了解决问题的办法。所以问题在于你放jest.spyOn的地方。因为我在构造函数中调用了方法,所以在创建包装器实例之前,或者在shallow/mount中引用组件之前,放置spy是很重要的

如果您需要在构造函数调用中监视方法,那么最好将spy放在测试用例或beforeach()中(如果您希望它适用于所有测试用例)