【问题标题】:sinon not stubbing property valuesinon 不存根属性值
【发布时间】:2018-05-05 13:43:22
【问题描述】:

我正在使用 sinon v4.1.2。根据文档 (http://sinonjs.org/releases/v4.1.2/sandbox/),我应该能够使用以下内容设置属性:

sandbox.stub(myObject, 'hello').value('Sinon');

但是,我得到了错误:

“SinonStub”类型上不存在属性“值”

真正的方法是什么?我查看了所有可用的函数,并尝试了returnValue,但这也不是一个有效的函数。

以下是在旧版本的 sinon 上工作:

sandbox.stub(myObject, 'hello', 'Sinon');

【问题讨论】:

  • myObject 的值是多少? { hello: 'world'}?
  • 编译失败,没有运行。

标签: sinon stub


【解决方案1】:

根据我的经验,没有必要每次都创建沙盒。您可以在没有它的情况下使用存根来降低代码的复杂性。 只需像这样定义一个存根:

const stubHello = sinon.stub(myObject, 'helloFunction');

然后你将拥有所有的存根权力!

【讨论】:

  • 这并没有真正解决问题中的用例。 Westy 想要存根一个属性,而不是一个函数。另外,似乎根本原因可能是他/她使用的版本(正如乔纳森所说)。问题中的原始代码和sinon.stub(myObject, 'hello').value('Sinon') 都应该可以工作。
【解决方案2】:

这适用于 Sinon.JS v4.1.2:

myObject = {hello: 'hello'}
sandbox = sinon.createSandbox()
sandbox.stub(myObject, 'hello').value('Sinon')
myObject.hello // "Sinon"
sandbox.restore()
myObject.hello // "hello"

【讨论】:

  • 我不确定之前发生了什么,但现在它可以正常工作了。我以为我跑了npm install,但也许第一次没用。感谢您验证它是否按文档说明工作。
猜你喜欢
  • 2015-11-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-19
  • 2015-01-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多