【问题标题】:How to spy on function from another module如何从另一个模块监视功能
【发布时间】:2016-09-13 07:37:47
【问题描述】:

我在一个模块中有两个功能:

export function foo() {
  console.log('foo');
}

export function bar() {
  foo()
}

现在我想测试bar(),在foo() 上设置spy 并断言它会被调用。如何做到这一点?

【问题讨论】:

  • 只是一个想法.....使用面向方面编程怎么样?
  • spy 是什么意思?
  • @Xotic750 实际上,我的意思是sinonjs.org/docs/#sinonspy

标签: javascript unit-testing sinon


【解决方案1】:

编辑/更新:抱歉,bar 和 foo 倒退了。 模块当前的结构方式。

执行代码时,函数 bar 内的 bar 引用将根据本地实现解析。您无法修改它,因为它在模块代码之外。无法访问区间。

您是否尝试过将这样的代码用于测试文件?

let obj = {};
obj.bar = function () {
 this.foo();
}

obj.foo = function() {
 ...
}

export default obj;

【讨论】:

  • 感谢您的回答,但问题是我的测试中导入的函数不是我的模块中调用的函数。它们是不同的实例,所以它不会给我任何结果。
  • 我知道您在编辑后的答案中建议的方法,我也知道监视原型方法的方法,但我在徘徊是否有办法只用函数来做到这一点。
猜你喜欢
  • 2021-11-04
  • 1970-01-01
  • 2018-10-01
  • 1970-01-01
  • 2019-05-08
  • 1970-01-01
  • 2018-04-27
  • 1970-01-01
  • 2012-10-13
相关资源
最近更新 更多