我正在尝试为我在 Lucee 4.5 上运行的 ColdBox 应用程序编写一个单元测试,使用 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 中重置头缓冲区呢?