【发布时间】:2015-08-21 18:01:28
【问题描述】:
我正在使用 process.platform 并希望存根该字符串值以伪造不同的操作系统。
(这个对象是在我无法触及的范围内生成的,我需要针对它可以采用的不同值进行测试)
是否可以存根/伪造这个值?
我尝试了以下方法,但没有任何运气:
stub = sinon.stub(process, "platform").returns("something")
我收到错误TypeError: Attempted to wrap string property platform as function
如果我尝试使用这样的模拟,也会发生同样的事情:
mock = sinon.mock(process);
mock.expects("platform").returns("something");
【问题讨论】:
-
这对我来说毫无意义。如果我在这里离开基地,任何人都请纠正我。我通常使用存根来创建被测试的函数/方法使用的假函数/方法,以便为正在测试的函数/方法创建可预测的场景。我从来没有测试过存根方法的返回值,因为(假设我强制我的存根方法返回一个值)我知道那个值已经是什么了。将值分配给对象属性只是为了转身和测试它更没有意义。也许我误解了你的问题。如果是这样,请详细说明。
-
所以,这里的上下文可能太少了。我正在做的是制作一个跨平台的 npm 模块,它必须在不同的操作系统上以不同的方式运行,因此我必须存根/伪造我在哪个操作系统上。我必须存根
process.platform,我相信我不能通过简单地覆盖它来改变它。 -
当然可以。我会把它作为我的答案发布。
-
@Cort3z 您的示例代码应该引用
process.platform而不是global.generated_object。始终显示真实代码。 -
@naomik:现在更新问题 :) 感谢您的反馈
标签: node.js mocking sinon stub