我们假设我有以下课程:
export default class Person {
constructor(first, last) {
this.first = first;
this.last = last;
}
sayMyName() {
console.log(this.first + " " + this.last);
}
bla() {
return "bla";
}
}
Run Code Online (Sandbox Code Playgroud)
假设我想创建一个模拟类,其中方法'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");
})
Run Code Online (Sandbox Code Playgroud)
第一个'expect'语句通过,这意味着'sayMyName'被成功模拟.但是,第二个'期望'失败并出现错误:
TypeError:person.bla不是函数
据我所知,模拟类删除了所有方法.我想知道如何模拟一个类,只有特定的方法才会被模拟.
jestjs ×1