Я пытаюсь написать модульный тест для моего приложения 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?