16

netTuts.com 上对QUnit的介绍引发了一次有趣的交流(从未解决),讨论如何针对操作 DOM 的操作应用单元测试。以下引用(亚历克斯·约克)达到了症结所在:

如果你有这样的功能,那就太好了:

函数 add(a, b) { var 结果 = a + b; $(“input#ResultTestBox”).val(result);

在上面的测试中,我想测试两件事:a 和 b 的相加,以及正确放入 DOM 元素的结果。我很想通过提供一些模拟 HTML 来测试第二件事。可能的?

但是,就像我说的......未解决。可解决?

4

3 回答 3

21

最新版本的 QUnit 支持#qunit-fixture允许您将 HTML 添加到 QUnit 网页的元素。

例如,在您的 HTML 中:

<ol id="qunit-tests"></ol>
<div id="qunit-fixture">test markup, will be hidden</div>

在你的 JavaScript 中:

$('<input id="ResultTestBox" type="text"/>').appendTo('#qunit-fixture');
var result = add(a, b);

equals(result, $('input#ResultTestBox').val(), "testing result box value");
于 2010-11-14T15:34:58.973 回答
2

当然,您真正关心的是val方法在返回值上被调用$(“input#ResultTestBox”)——您不需要测试 jQuery 方法本身的功能。为什么不注入 jQuery 对象的模拟实现并对其进行测试呢?

于 2010-11-15T10:04:02.110 回答
0

如果您不想为所有测试创建 html 页面沙箱的麻烦,您可以在env.js中运行它们。

于 2010-11-14T15:58:11.547 回答