相关疑难解决方法(0)

Jest:如何模拟一个类的特定方法

我们假设我有以下课程:

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

15
推荐指数
6
解决办法
2万
查看次数

标签 统计

jestjs ×1