美文网首页
【jest - 替换掉某个方法】

【jest - 替换掉某个方法】

作者: wn777 | 来源:发表于2024-05-22 20:44 被阅读0次

在使用 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');
  });

});

相关文章

网友评论

      本文标题:【jest - 替换掉某个方法】

      本文链接:https://www.haomeiwen.com/subject/ouwzfjtx.html