我有一对使用document.write()
来更改DOM的实用程序函数,注入加载JavaScript和CSS的标记。
是否可以使用QUnit来测试注入是否正确发生,而不会影响测试结果页面的实际DOM ?
I can:
-
覆盖
document.write()
,可能在setup
中,并在teardown
中重置,作为我定义的函数。但是我没有测试对document.write()
的调用是否做了他们应该做的事情。 -
使用js-test-driver之类的东西从命令行运行JavaScript(尽管我真的想让测试结果页面可用)
-
为这些实用程序测试创建一个单独的测试结果页面,以便这些结果不会以任何方式、形状或形式影响其他测试(尽管我确实想要一个统一的页面)。
-
让实用函数加载空的JS和CSS文件,这样它们就不会影响结果页。
所以我有选项。
但是我真正想要的是使document
成为一些文档,而不是实际的当前文档。我不确定这是否可能。(事实上,我甚至不确定这有什么意义。)这可能吗?这似乎是我可以用iframe或类似的东西来做的事情。
如果有帮助的话,这里有一个我想要进行单元测试的函数类型的例子:
function(jsFile){
document.write('<script type="text/javascript" src="'+jsFile+'"></script>');
}
我意识到我不需要测试document.write()
。我只需要测试我的代码是否发送了一些预期的document.write()
。所以我选择了上面的第一个选项,在setup()
和teardown()
中临时重新定义document.write()
进行测试。