我有一个具有一些属性的模块。我的使用方法如下
Var propmodule = require('me-props');
var prop = new propmodule('server');
prop.get('min); //returns 3
prop.get('max') //returns 10
我必须模拟这个来进行测试。下面的代码是否使用了 proxyquire 和 sinon
var spro = proxyquire('../lib/add.js',{
'me-props' : sinon.stub.returns({
get : sinon.stub.returns({
min :'3',
max : '10
)}
)}
})
上面的代码有效。但在测试时,get方法调用返回一个对象。 get(min) 返回一个对象。 var a = prop.get() 然后 a('min') 返回 3。 但 prop.get('min') 返回一个对象。
如何修改 stub 以返回 get 调用的值?
最佳答案
一种解决方案是使用 withArgs
来谓词 returns
,这样它将匹配函数参数(min
和 max
)并返回适当的值:
var stub = sinon.stub();
stub.withArgs('min').returns('3');
stub.withArgs('max').returns('10');
stub.throws('InvalidArgument'); // Throw an exception when an invalid argument is used.
var spro = proxyquire('../lib/add.js', { 'me-props' : { get : stub } });
关于node.js - Node Stub 一个返回对象的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38847398/