Sinon: 同一文件中的存根方法不起作用

创建于 2016-10-05  ·  3评论  ·  资料来源: sinonjs/sinon

我正在尝试对文件中的函数进行单元测试,同时存根同一文件中的另一个函数,但没有应用模拟,并且正在调用真正的方法。 下面是一个例子:

// file: 'foo.js'

export function a() {
   // .....
}

export function b() { 
   let stuff = a(); // call a
   // ...do stuff
}

我的测试:

import * as actions from 'foo';

const aStub = sinon.stub(actions, 'a').returns('mocked return');
actions.b(); // b() is executed, which calls a() instead of the expected aStub()

所有3条评论

想想这在标准 ES5 中会是什么样子。 每个函数都以导出对象上的特定名称导出,但也可以使用函数名称在内部引用。 我们正在谈论两个不同的参考。 存根时,您正在更改外部参考。 内部参考保持不变。 你不能改变它,除非你创建了一个显式的依赖注入器(比如内部使用的 setter 函数)。 这不是错误,而是 JavaScript 的一个特性。

有什么解决方法吗?在测试 nodejs 文件时遇到这种问题是很常见的。

这在我们的文档中介绍,在如何部分:
http://sinonjs.org/how-to/link-seams-commonjs/

此页面是否有帮助?
0 / 5 - 0 等级