我在一个测试中模拟了一个类的静态函数,但我会影响其他测试。由于静态函数的性质,代码为:
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();
});
在B
测试中,User.removeInstance()
仍然被A
测试所模仿,如何将removeInstance()
重置为由其类定义的原始函数?
3条答案
按热度按时间gg58donl1#
你可以尝试使用
jest.spyOn
这样的东西应该会为你恢复功能:-
pgky5nke2#
我有一个类似的问题,我必须模拟一个外部函数进行一个测试,但Jest不会/无法恢复函数的原始值。
所以我最后用了这个,但我很想知道是否有更好的方法
不雅,但它的工作;
vsaztqbk3#
在Vue JS中,我做了以下事情: