Я приношу тесты в наши файлы javascript на моем месте работы. Я решил использовать библиотеки Mocha, Chai и Sinon, чтобы помочь в тестировании. Я начинаю писать блок-тесты для функций, которые не требуют слишком много рефакторинга, и столкнулись с этим интересным случаем, который я действительно не понимаю.Sinon заглушка функция в пределах функции
function getQueries() {
code that returns queries in an array -> ['one', 'two', 'three']
}
function sort(col, type) {
var queries = getQueries();
some code that sorts these queries
return sorted array
}
Поскольку я модульное тестирование функции сортировки я хотел незавершенную getQueries() для возврата фиктивного списка.
var queries = ['one', 'two', 'three'];
sinon.stub(getQueries).returns(queries);
Приведенный выше код не работает Сообщ ошибки:
TypeError: Attempted to wrap undefined property undefined as function
at Object.wrapMethod (file://node_modules/sinon/pkg/sinon-1.17.7.js:1359:29)
at Object.stub (file://node_modules/sinon/pkg/sinon-1.17.7.js:3459:26)
at F.stub (file://node_modules/sinon/pkg/sinon-1.17.7.js:4200:44)
at Context.obj.stub (file://node_modules/sinon/pkg/sinon-1.17.7.js:4215:37)
at Context.<anonymous> (unit_tests/unit_test.js:154:10)
at Context.sinonSandboxedTest (file:/node_modules/sinon/pkg/sinon-1.17.7.js:6069:39)
Однако код ниже сделал работу должным образом.
var queries = ['one', 'two', 'three'];
getQueries = sinon.stub();
getQueries.returns(queries);
Я не совсем понимаю, почему этот код работает, а тот, который над ним нет. Я знаю синтаксис sinon.stub (obj, method, function), но getQueries - это функция без объекта. Любое понимание очень ценится.
Удивительный! Я пытался использовать документ в качестве моего глобального объекта, но я думаю, его окно. Спасибо за ответ. –