Sinon存根调用Forfake参数

时间:2017-05-18 21:18:39

标签: javascript sinon

我在

之前完成了以下存根
sinon.stub(console, 'log', () => {
    // Check what the arguments holds 
    // And either console.info it or do nothing
});

例如,在其中添加console.info(arguments)会向我显示console.log正在获得的内容。

使用版本2xx,我切换到callsFake

sinon.stub(console, 'log').callsFake(() => {
    // Check what the arguments holds
    // And either console.info it or do nothing
});

这现在更长久了。 console.info(arguments)具有市集价值,与console.log传递的内容无关。

我做错了什么?!

1 个答案:

答案 0 :(得分:3)

您传递给callsFake的箭头功能并没有像通常在常规功能中所期望的那样接收arguments对象。

来自MDN

  

箭头函数表达式的语法短于函数表达式,并且没有自己的参数,super或new.target。

将箭头函数更改为常规匿名函数(function() {...})或使用spread运算符显式解包参数:

sinon.stub(console, 'log')
console.log.callsFake((...args) => {
  console.info(args)
});