在使用 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');
});
});
网友评论