使用QUnit测试使用document.write()的实用程序函数:使文档对象成为其他文档

Using QUnit to test utility functions that use document.write(): Make document object be some other document?

本文关键字:文档 函数 对象 其他 实用程序 测试 QUnit document write 使用      更新时间:2023-09-26

我有一对使用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()进行测试。