2016-10-28 3 views
1

Как я могу проверить метод Function.prototype.apply на этот код?Тестирование метода применения javascript с помощью sinon

var yoGen = require('yeoman-generator'); 

exports.method = function() { 

    yoBen.Base.apply(this, arguments); 

}; 

Как я могу утверждать, что apply был вызван с правильными аргументами в правом модуле? Я стараюсь, как это, но не в состоянии:

var apply = sinon.stub(yoGen.Base,'apply'); 
testingModule.method(); 
sinon.assert.calledWith(apply,testingModule,{}); 

Ошибка утверждают является:

apply({ ... content of testingModule ... }) != { ... content of testingModule ... } 
+0

Что должен делать модуль? Это функция, которая что-то возвращает? – staypuftman

+0

@staypuftman Я обновил вопрос ... btw его функция ... – urosjarc

ответ

0

Function.prototype.apply просто стенография для контура объекта с помощью функции. MDN показывает pretty good example to follow:

var numbers = [5, 6, 2, 3, 7]; 

// using Math.min/Math.max apply 
var max = Math.max.apply(null, numbers); 
// This about equal to Math.max(numbers[0], ...) 
// or Math.max(5, 6, ...) 

В вашем примере, это не 100% ясно, что вы yoBen функция делает, но вы бы перекручивание через arguments и может просто вывести результат как это:

// Put apply into a variable  
var results = yoBen.Base.apply(this, arguments); 

// Just output the results and see what happened 
console.log(results); 
+0

'JSON.stringify (testingModule)' после выполнения метода 'apply ({... content of testingModule ...})', как черт возьми, я могу проверить это? – urosjarc

+0

Вернитесь к шагу - что делает 'console.log (apply);' output. – staypuftman

+0

Применение - это native 'Function.prototype.apply'. Таким образом, применить вывод: 'apply not defined'. – urosjarc

Смежные вопросы