Asynchronous JavaScript Testing with QUnit
I’m implementing a feature that does some stuff when an IFRAME is finished loading. Due to the inherent asynchronous nature of this functionality, it was hard to test. I was trying to use QUnit, but having issues, until I found this post:
http://markdotmeyer.blogspot.com/2008/07/javascript-unit-testing-with-qunit.html
The summary? Check out the stop() and start() functions.
Now, I can write my test like this:
test("addWindow should remove the loadingStauts div after the iframe is loaded", function() { var loadingStatus = $("<div></div>").attr("id", "loadingDiv"); var stack = $("<div></div>") .attr("id", "stackDiv") .appendTo("#stack") .windowStack() .withLoadingStatus(loadingStatus); stack[0].addWindow("Blank_for_iframe_testing.htm", ""); stop(); setTimeout(function() { equals(loadingStatus[0].parentNode, null, "loadingStatus DIV should be removed after the iframe is loaded"); start(); }, 500); });