При работе с App Engine и Go при использовании встроенного пакета шаблонов могут возникнуть проблемы во время модульного тестирования. В частности, проблема возникает из-за неспособности сервера определить путь к файлам шаблонов в среде тестирования.
Причина проблемы
При обычном выполнении приложения текущий каталог — это корень приложения, в котором находится файл app.yaml. Следовательно, достаточно путей относительно этого корня. Однако при модульном тестировании текущий каталог перемещается в папку, содержащую тестовый файл. Относительные пути, которые правильно работают в корне приложения, могут привести к сбою при разрешении в контексте этой измененной структуры каталогов.
Варианты решения
Для решения этой проблемы есть два эффективных подхода. представиться:
Вариант 1. Изменение рабочего каталога
Один из вариантов — изменить рабочий каталог каталог в корень приложения перед выполнением кода, использующего относительные пути. Этого можно добиться с помощью функции os.Chdir(), которую можно вызвать из метода тестирования или даже включить в функцию init(). Например, если тестовый файл находится по адресу [APP_ROOT]/my/package/some_test.go, корень приложения можно установить следующим образом:
if err := os.Chdir("../.."); err != nil { panic(err) }
Вариант 2: Рефакторинг кода
Альтернативно код можно реорганизовать, чтобы принять переменный параметр базового пути для относительных путей. Во время тестирования для этой переменной можно установить базовый путь к корню приложения или соответствующий относительный путь. Избегая жестко запрограммированных относительных путей, этот подход обеспечивает функциональность кода в различных средах выполнения.
Заключение
Выбрав любое из этих решений, можно выполнить модульное тестирование шаблонов App Engine. могут быть эффективно достигнуты, обеспечивая тщательную проверку функциональности и повышенную стабильность программного обеспечения.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3