开玩笑:如何模拟类的一个特定方法
2022-08-30 02:36:01
假设我有以下类:
export default class Person {
constructor(first, last) {
this.first = first;
this.last = last;
}
sayMyName() {
console.log(this.first + " " + this.last);
}
bla() {
return "bla";
}
}
假设我想创建一个模拟类,其中方法“sayMyName”将被模拟,方法“bla”将保持原样。
我写的测试是:
const Person = require("../Person");
jest.mock('../Person', () => {
return jest.fn().mockImplementation(() => {
return {sayMyName: () => {
return 'Hello'
}};
});
});
let person = new Person();
test('MyTest', () => {
expect(person.sayMyName()).toBe("Hello");
expect(person.bla()).toBe("bla");
})
第一个“expect”语句通过,这意味着“sayMyName”被成功嘲笑。但是,第二个“期望”失败并出现错误:
TypeError: person.bla 不是一个函数
我知道被嘲笑的类删除了所有方法。我想知道如何模拟一个类,以便只有特定的方法才会被模拟。