繁体   English   中英

诗农不适用于导出功能

[英]Sinon not working for exported function

我有一个非常简单的 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()不同。 最好的方法是将trysinon更改为 class,或者在foo()调用导出的bar()如下。

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

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

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

希望这可以帮到你。

我改用箭头函数,它有效。

export const foo = () => {
  bar();
}

export const bar = () => {
 return 2;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM