gpt4 book ai didi

javascript - 有没有办法用 Jest 模拟私有(private)函数?

转载 作者:行者123 更新时间:2023-12-02 23:54:04 25 4
gpt4 key购买 nike

我想要测试的 ES6 模块如下所示:

function privateFunction() {
...
}
export function publicFunction() {
... does something ...
privateFunction()
... does something else ...
}

我正在使用 JEST 进行单元测试,我试图找到一种方法来测试 publicFunction 并通过模拟来避免 privateFunction 的执行,但我做不到模拟尝试成功。有什么想法吗?

最佳答案

如果您想模拟私有(private)函数,请尝试使用原型(prototype)

例如,您需要模拟以下类的privateFunction:

export class Module {
public publicFunction() {
// do something
this.privateFunction();
// do something
}

private privateFunction() {
// do something
}
}

所以你应该在jest.spyOn函数中使用Module.prototype

import { Module } from './my-module';

describe('MyModule', () => {
it('tests public function', () => {
// Arrange
const module = new Module()
const myPrivateFunc = jest.spyOn(Module.prototype as any, 'privateFunction');
myPrivateFunc.mockImplementation(() => {});

// Act
module.publicFunction();

// Assert
expect(myPrivateFunc).toHaveBeenCalled();
});
});

关于javascript - 有没有办法用 Jest 模拟私有(private)函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43265944/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com