Created
January 3, 2012 02:19
-
-
Save randombits/1553139 to your computer and use it in GitHub Desktop.
Overrides for mock objects/functions in JavaScript based QUnit Unit Tests.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> | |
<html> | |
<head> | |
<title>Test overrides</title> | |
<!-- Load jQuery and QUnit dependencies --> | |
<link rel="stylesheet" href="http://code.jquery.com/qunit/git/qunit.css" type="text/css" media="screen"/> | |
<script type="text/javascript" src="http://code.jquery.com/jquery-latest.js"></script> | |
<script type="text/javascript" src="http://code.jquery.com/qunit/git/qunit.js"></script> | |
<!-- Load the auto-generated unit-tests.js --> | |
<script type="text/javascript" src="unit-tests.js"></script> | |
<!-- Run the Unit Tests --> | |
<script type="text/javascript"> | |
//-------------------------------------------------------------------------------------------------------------- | |
// Constructor for overrides. | |
function overrides(overrides) { | |
var _overrides = {}; | |
for (var name in overrides) { | |
if (typeof name == "string") { | |
var keys = name.split('.'); | |
var object = window; | |
for (var i = 0; i < (keys.length - 1); ++i) { | |
object = object[keys[i]]; | |
if (!object) break; | |
} | |
if (object) { | |
var key = keys[i]; | |
_overrides[name] = { | |
"object": object, | |
"key": key, | |
"value": object[key], | |
"override": overrides[name] | |
}; | |
} | |
} | |
} | |
this.overrides = _overrides; | |
} | |
// Implementation for overrides. | |
overrides.prototype = { | |
set: function () { | |
for (var key in this.overrides) { | |
var override = this.overrides[key]; | |
override.object[override.key] = override.override; | |
} | |
}, | |
reset: function () { | |
for (var key in this.overrides) { | |
var override = this.overrides[key]; | |
override.object[override.key] = override.value; | |
} | |
} | |
} | |
// Helper function for testing overrides | |
function _true() { | |
return true; | |
} | |
// Helper function for testing overrides | |
function _false() { | |
return false; | |
} | |
//-------------------------------------------------------------------------------------------------------------- | |
// Run the Unit Tests after the document has finished loading. | |
$(document).ready(function () { | |
test("Overrides", 7, function () { | |
var numOverridesCalled = 0; | |
var _overrides = new overrides({ | |
"_true": function () { ++numOverridesCalled; return false; }, | |
"_false": function () { ++numOverridesCalled; return true; } | |
}); | |
// Check original functions. | |
strictEqual(_true(), true, "Original _true() is expected to return true."); | |
strictEqual(_false(), false, "Original _false() is expected to return false."); | |
// Check overrides. | |
_overrides.set(); | |
strictEqual(_true(), false, "Overridden _true() is expected to return false."); | |
strictEqual(_false(), true, "Overridden _false() is expected to return true."); | |
// Re-check original functions. | |
_overrides.reset(); | |
strictEqual(_true(), true, "Original _true() is expected to return true."); | |
strictEqual(_false(), false, "Original _false() is expected to return false."); | |
// Veify overrides were actually called. | |
strictEqual(numOverridesCalled, 2, "Verify numver of overrides called."); | |
}); | |
}); | |
</script> | |
</head> | |
<body> | |
<h1 id="qunit-header"> | |
Test overrides</h1> | |
<h2 id="qunit-banner"> | |
</h2> | |
<div id="qunit-testrunner-toolbar"> | |
</div> | |
<h2 id="qunit-userAgent"> | |
</h2> | |
<ol id="qunit-tests"> | |
</ol> | |
<div id="qunit-fixture"> | |
</div> | |
</body> | |
</html> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment