Я думаю, что здесь есть проблема с терминологией, когда вы говорите «обособленно».
Единица тестирует тестирование изолированной единицы кода.
Интеграция тесты проверяют взаимодействие между изолированными единицами.
A единица тест для вашего метода может быть чем-то вроде
const mock = {}; // fill with appropriate properties
const result = CacheBustingService
.prototype
.appendCacheBustingParam
.call(mock, someURL);
expect(result).toBe(expectedResult);
Юнит-тест не должен требовать подключения службы.Модульные тесты, как правило, должны запускаться на узле из командной строки, в идеале без запуска даже 10 *, потому что вы все заглушили.Ваши юнит-тесты должны выполняться менее чем за секунду.Желательно для всего пакета, но это может быть невозможно в зависимости от размера кодовой базы.
Похоже, что вы хотите, это интеграция тест: действительно ли создание службы подключает все правильно?
В случае интеграционных тестов, имеет смысл на самом деле создать сервис, чтобы выяснить это, имея в виду запуск его в браузере, например, с кармой и фактическими зависимостями (не как автономный).файл).Интеграционные тесты могут быть медленнее / выполняться реже.
Одна заключительная нота
Ваш метод не очень поддается автоматическому тестированию, поскольку он ссылается на глобальные переменные и делает это через окно:
if (hasQueryParams) {
return templateUrl + window.appendCacheBustingParam;
} else {
return templateUrl + window.cacheBustingParam;
}
Вместо этого укажите эти параметры в методе.