node.js - Node Stub 一个返回对象的方法

标签 node.js sinon proxyquire

我有一个具有一些属性的模块。我的使用方法如下

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,这样它将匹配函数参数(minmax)并返回适当的值:

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/

相关文章:

node.js - 如何运行 "npm install"为旧的 Angular 项目创建 node_modules 文件夹?

javascript - 在 Sinon.js spy 上调用的测试方法

jquery - 如何使用 Sinon stub AJAX 调用

node.js - Typescript/Node.js - 如何模拟集成测试的传递依赖?

javascript - 平均分配组总数的最佳方法是什么?

javascript - 获取用户名和密码,这段代码对吗?

javascript - 使用 sinon 在 Ember App Kit 中测试 Ember Simple Auth

javascript - 为 async.parallel 编写测试。

javascript - proxyquire 如何处理代理模块的二级(间接)需求?

node.js - 保持 Node 应用程序在azure应用程序服务上运行