javascript - Sinon 不适用于导出功能

标签 javascript mocha.js sinon

我有一个非常简单的 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/

相关文章:

javascript - 使用 PHP 将异常返回到 javascript FETCH API

node.js - 如何从单个文件夹运行 npm 测试?

testing - ES6 构造函数可以更容易地用 Sinon stub 吗?

php - HTML5音频元素

javascript - 如何获取用户在 SumoSelect 中选择的值?

javascript - javascript 中 MD5 计算的预期性能?

javascript - Sinon .callsFake() 没有模拟函数的返回

javascript - 在 Mocha 测试中使用 for 循环

javascript - 监视函数 sinon 返回的函数

javascript - spy 无法跟踪 Mocha 和 Sinon 的异步功能测试