gpt4 book ai didi

javascript - Sinon 不适用于导出功能

转载 作者:行者123 更新时间:2023-12-03 04:14:30 28 4
gpt4 key购买 nike

我有一个非常简单的 JS 库(称为 trysinon.js),如下所示:

export function foo() {
bar();
}

export function bar() {
return 2;
}

我有以下测试

import expect from 'expect';
import sinon from 'sinon';
import * as trysinon from 'trysinon';

describe('trying sinon', function() {
beforeEach(function() {
sinon.stub(trysinon, 'bar');
});

afterEach(function() {
trysinon.bar.restore();
});

it('calls bar', function() {
trysinon.foo();
expect(trysinon.bar.called).toBe(true);
});
});

测试失败了。如何确保测试通过?

最佳答案

因为在 foo() ,您调用bar()这是trysinon.js 的内部函数。这个bar()bar() 不同你 stub 了导出的内容。最好的办法就是改变trysinon到类,或称为导出bar()foo()如下。

function bar() { return 2; }
module.exports.bar = bar;

function foo() {
module.exports.bar();
}
module.exports.foo = foo;

然后你可以 stub bar()sinon.stub(trysinon, 'bar').returns(2)

希望这可以帮助你。

关于javascript - Sinon 不适用于导出功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44199690/

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