Есть ли способ скомпилировать представление gsp в html с учетом предоставленной модели из отличного сценария без необходимости запускать все приложение Grails?
Сценарий использования состоит в том, что из-за требований клиента мы должны использовать Javascript / jQuery для создания внешнего интерфейса приложения. У нас уже есть определение архитектуры, но у нас возникают проблемы с созданием интеграционных интерфейсных тестов, поскольку наш интерфейс состоит из .gsp, javascript и css, все они разбиты на компоненты. Например: с кнопкой могут быть связаны файлы .gsp, .js и .css.
Идеальное решение для создания тестов интеграции интерфейсных компонентов: скомпилировать .gsp в html перед запуском тестов, чтобы мы могли запускать утверждения в файлах * .test.js. Поскольку нам не нужна база данных, службы или другие экземпляры для компиляции .gsp, нет необходимости запускать приложение, что позволяет избежать загрузки приложения.
Заранее спасибо!
Да, мне нужно сделать это преобразование. Как я могу сделать все это преобразование?
Следующий код должен вам помочь.
File gspFile = new File(BuildSettings.BASE_DIR, "grails-app/view/path/to/view/${viewName}.gsp")
Этот код найдет gsp, вы можете найти его по absoluteUrl
if (gspFile.exists()) {
def model = model((Class)scaffoldValue)
def viewGenerator = new GStringTemplateEngine()
Template t = viewGenerator.createTemplate(gspFile)
def contents = new FastStringWriter()
t.make(model.asMap()).writeTo(groovy.lang.Writer)
}
Writer вы должны найти сами, подумайте, что это может быть поток в файл. Не тестировал, но должно работать :)
Если вы не используете теги и т. д., Вы можете просто изменить .gsp на .html (и добавить ресурсы). Но если вы его используете, то это более сложно, поскольку .gsp скомпилирован в JavaClass, а этот класс - render html. Итак, в качестве подсказки вы можете скомпилировать gsp в JavaClass, а затем попытаться запустить его, но я не уверен, что это будет простой вызов java -jar