Я пытаюсь написать модульный тест для моего приложения ColdBox, работающего на Lucee 4.5, используя testbox для функции, которая включает вызов cfhtmlhead()
.
К сожалению, строка, которая обычно добавляется в раздел <head>
вывода HTML с использованием этой функции, вместо этого добавляется к выводу модульного теста, что приводит к сбою теста.
Вывод cfhtmlhead()
явно записывается в специальный буфер. Согласно сообщению в блоге , этот буфер можно очистить. Показанный здесь пример функции выглядит следующим образом:
function clearHeaderBuffer() {
local.out = getPageContext().getOut();
while (getMetaData(local.out).getName() is "coldfusion.runtime.NeoBodyContent") {
local.out = local.out.getEnclosingWriter();
}
local.method = local.out.getClass().getDeclaredMethod("initHeaderBuffer", arrayNew(1));
local.method.setAccessible(true);
local.method.invoke(local.out, arrayNew(1));
}
Хотя сообщение в блоге написано для Adobe ColdFusion, и оно явно не работает в Lucee.
По дампу local.out
я увидел, что у объекта есть метод resetHTMLHead()
. Но вызов этого метода тоже не работает (даже когда связанный метод getHTMLHead()
выводит строку из вызова cfhtmlhead()
).
Итак, как сбросить буфер заголовка в Lucee?