【jest - 替换掉某个方法】

2024-05-22  本文已影响0人  wn777

在使用 Jest 进行单元测试时,可能需要替换或者模拟一个对象的方法,则可以使用spyOn
下面是一个具体的例子,演示如何用 Jest 来模拟一个对象中的方法。假设你有一个 MyClass 类,如下所示:

// MyClass.js
class MyClass {
  myMethod() {
    return 'original value';
  }
}

module.exports = MyClass;

使用spyOn

// MyClass.test.js
const MyClass = require('./MyClass');

describe('MyClass', () => {
  let myClassInstance;

  beforeEach(() => {
    myClassInstance = new MyClass();
  });

  it('should return mock value when myMethod is mocked', () => {
    // 使用jest.spyOn 模拟 myMethod 方法
    const spy = jest.spyOn(myClassInstance, 'myMethod').mockImplementation(() => 'mocked value'); 
    const result = myClassInstance.myMethod();

    // 验证: 返回的是模拟值
    expect(result).toBe('mocked value');

    // 恢复原始实现
    spy.mockRestore();
    const result2 = myClassInstance.myMethod();
    expect(result2).toBe('original value');
  });

});

上一篇 下一篇

猜你喜欢

热点阅读