我在测试中模拟了类的静态函数,但我会影响其他测试。由于静态函数的性质,代码是:
test('A', async () => {
expect.assertions(2);
let mockRemoveInstance = jest.fn(() => true);
let mockGetInstance = jest.fn(() => true);
User.removeInstance = mockRemoveInstance;
User.getInstance = mockGetInstance;
await User.getNewInstance();
expect(mockRemoveInstance).toHaveBeenCalled();
expect(mockGetInstance).toHaveBeenCalled();
});
test('B', () => {
let mockRemoveInstance = jest.fn();
const Singletonizer = require('../utilities/Singletonizer');
Singletonizer.removeInstance = mockRemoveInstance;
User.removeInstance();
expect.hasAssertions();
expect(mockRemoveInstance).toHaveBeenCalled();
});
In B
test User.removeInstance()
仍然被嘲笑A
测试一下,如何重置removeInstance()
到其类定义的原始函数中?
您可以尝试使用jest.spyOn
像这样的事情应该会为您恢复功能:-
let mockRemoveInstance = jest.spyOn(User,"removeInstance");
mockRemoveInstance.mockImplementation(() => true);
User.removeInstance();
expect(mockRemoveInstance).toHaveBeenCalledTimes(1);
// After this restore removeInstance to it's original function
mockRemoveInstance.mockRestore();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)