Мы используем require
и Browserify, поэтому модули одной функции импортируются как это:Использование жасмин для `spyOn` функцию в (разные) закрытия
var loadJson = require('../loadJson');
и использовать так:
x = loadJson(url);
Я хотел бы spyOn
, что loadJson функция, но это кажется невозможным.
Это не глобальная функция, так что это не работает:
spyOn(window, 'loadJson')
Это не локальная функция, так что это не работает:
loadJson = createSpy('loadJsonSpy', loadJson).and.callThrough();
Когда я require
модуль в моя спецификация Jasmine, функция видна внутри этого закрытия, но это не то же самое закрытие, что и другой модуль, который фактически использует loadJson
для реального.
Таким образом, в общем, я думаю, что это не возможно использовать spyOn
в данном случае - это правильно? Любые творческие обходные пути?
Ох. http://philipwalton.com/articles/how-to-unit-test-private-functions-in-javascript/ –
Эта ссылка предназначена для тестирования частных функций. '' 'loadJson''' не является частной функцией в вашем случае. –
Вы уверены? Это особенно касается функций тестирования в рамках закрытий - это просто называет их «частными функциями». –