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);
});