The introduction to QUnit over at netTuts.com spawns an interesting exchange (never resolved) over how to apply unit tests against actions that manipulate the DOM. The following
Surely what you actually care about is that the val
method gets called on the return value of $(“input#ResultTestBox”)
—you don't need to test the functionality of the jQuery method itself. Why not inject a mock implementation of the jQuery object and test against that?
You can run them in env.js, if you don't want the hassle of creating html page sandboxes for all your tests.
The latest version of QUnit supports a #qunit-fixture
element that lets you add HTML to the QUnit web page.
E.g., in your HTML:
<ol id="qunit-tests"></ol>
<div id="qunit-fixture">test markup, will be hidden</div>
and in your JavaScript:
$('<input id="ResultTestBox" type="text"/>').appendTo('#qunit-fixture');
var result = add(a, b);
equals(result, $('input#ResultTestBox').val(), "testing result box value");