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

时间:2011-10-17 04:00:21

标签: javascript unit-testing dom qunit document.write

我有一对实用程序函数,使用document.write()来改变DOM,注入加载JavaScript和CSS的标记。

是否可以使用QUnit测试注入是否正确发生而不会影响测试结果页面的实际DOM?

我可以:

  • 覆盖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>');
}

1 个答案:

答案 0 :(得分:0)

我意识到我不需要测试document.write()。我只需要测试我的代码是否正在向document.write()发送预期的内容。所以我选择了上面的第一个选项,暂时在document.write()setup()中重新定义teardown()以进行测试。