Sinon 间谍行为不符合预期

Sinon spy not behaving as expected

我在 utilityService.js

中有两个函数 foo 和 bar
export function foo() {
    return bar();
}

export function bar() {
    return 1;
}

在我的测试文件中,我导入了 utilityService.js 并监视了 bar 函数。 我希望间谍的 callCount 为 1,因为 foo 被调用,但它是 0。如果我遗漏了什么,请提出建议。

import * as utilityService from '../services/utility-service';

let callSpy = sinon.spy(utilityService, 'bar');
expect(utilityService.foo()).to.equal(1);
expect(callSpy.callCount).to.equal(1);

来自Sinon documentation:

sinon.spy(object, "method") creates a spy for object.method and replaces the original method with the spy.

import 创建一个名为 utilityService 的对象,它引用 foobarSinonutilityService.bar() 替换为它自己的函数。但是foo不调用utilityService.bar(),而是bar()直接调用。所以调用不会通过 Sinon 的替换函数。

我希望清楚。