Node Stub — метод, который возвращает объект

У меня есть модуль, который имеет некоторые свойства. Я использую его, как показано ниже

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') возвращает объект.

Как я могу изменить заглушку, чтобы вернуть значение для вызова get?


person Shabin Hashim    schedule 09.08.2016    source источник


Ответы (1)


Одним из решений было бы указать returns с withArgs, чтобы он соответствовал аргументам функции (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 } });
person robertklep    schedule 09.08.2016
comment
Простите мое невежество. Но разве мне не нужна заглушка для получения в приведенном выше коде? - person Shabin Hashim; 09.08.2016
comment
@ShabinHashim не невежество, а просто глупая ошибка с моей стороны! Отредактировал мой ответ =D - person robertklep; 09.08.2016
comment
Требуется небольшая модификация: {'me-props': sinon.stub().returns({get: stub}) Спасибо. - person Shabin Hashim; 09.08.2016