gpt4 book ai didi

ecmascript-6 - 监视在 Jest 中调用另一个函数的导入函数

转载 作者:行者123 更新时间:2023-12-03 15:45:39 25 4
gpt4 key购买 nike

我试图监视由另一个函数调用的函数,这两个函数都驻留在外部文件中并导入。

Funcs.spec.js:

import * as Funcs from './Funcs'
describe('funcA', () => {
it('calls funcB', () => {
jest.spyOn(Funcs, 'funcB')
Funcs.funcA()
expect(Funcs.funcB).toHaveBeenCalled()
}
}

Funcs.js:
export const funcA = () => {
funcB()
}
export const funcB = () => {}

由于某种原因, spy 在 Funcs.js 的范围内不受尊重。我能做些什么来监视 funcB 以便我知道 funcA 调用了它?

最佳答案

只有方法可以被窥探。没有办法窥探funcB如果像 funcB() 这样直接调用在同一模块内。

为了监视或模拟导出的函数,funcAfuncB应该驻留在不同的模块中。

这允许监视 funcB在转译的 ES 模块中(模块对象在 native ESM 中是只读的):

import { funcB } from './b';

export const funcA = () => {
funcB()
}

由于模块导入是模块的表示,这被转换为:
var _b = require('./b');

var funcA = exports.funcA = function funcA() {
(0, _b.funcB)();
};

在哪里 funcB方法绑定(bind)到 _b模块对象,因此可以监视它。

关于ecmascript-6 - 监视在 Jest 中调用另一个函数的导入函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50854440/

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