如何在玩笑中将模拟函数恢复为原始值?

2024-02-22

我在测试中模拟了类的静态函数,但我会影响其他测试。由于静态函数的性质,代码是:

  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(使用前将#替换为@)

如何在玩笑中将模拟函数恢复为原始值? 的相关文章

随机推荐