Unit testing JavaScript with JsUnit
my-script.js
function capitalize(str) {
return str?
str.length>1?str[0].toUpperCase()+str.substring(1):
str.toUpperCase():str;
}
This is my JavaScript function for capitalizing the first letter of a String. I was sure that I got capitalization right, but I wasn’t too sure about how this function would handle null/empty values.
So I wrote a unit test, for JsUnit:
my-script.test.html
<script language="javascript" src="jsUnitCore.js"></script>
<script language="javascript" src="my-script.js"></script>
<script language="javascript">
function testCapitalize() {
assertEquals("Foo bar", capitalize("foo bar"));
assertEquals("Foobar", capitalize("foobar"));
assertEquals("F", capitalize("f"));
assertEquals("", capitalize(""));
assertEquals(JSUNIT_UNDEFINED_VALUE, capitalize(JSUNIT_UNDEFINED_VALUE));
}
</script>
The test requires loading the jsUnitCore.js script. This test loads a local copy but you could use the online version as well. Then I can run the test with my local TestRunner.
Status: Done (0.156 seconds) Runs: 1 Errors: 0 Failures: 0
Now I know that my function is correct!
When a test fails the assertion error looks like this:
1. my-script.test.html:testCapitalize failed Expected <Foobar> (String) but was <foobar> (String) Stack trace follows: > JsUnitException > _assert > assertEquals > testCapitalize
Happy testing!
June 18th, 2007 at 14:24
[…] to brush up on his Javascript knowledge, going beyond basic syntax and applying methodologies like unit testing. Posted by Dionysios Synodinos Filed in […]