Assertions
Within each test, you can use any of these functions to check the output of your program. If an assertion fails, no further code in that test is run.
You are free to use any other assertion library you like; as long as your
assertions throw errors when invalid, those errors will be caught and reported
by jstest
. To make jstest
report these errors as failures, add the type of
error your assertion library throws to this list:
JS.Test.ASSERTION_ERRORS.push(assert.AssertionError);
(jstest
treats AssertionError
from the Node assert
module as a failure
out of the box.)
The assertions provided by jstest
are listed below.
assertBlock([message, ]callback)
Passes if the callback
function returns a truthy value. message
is an
optional parameter, as it is for all other assertions, and if given should be
a string that will be used when printing an error message if the assertion
fails.
assert(boolean[, message])
Passes if the expression boolean
has a truthy value.
assertNot(boolean[, message])
Passes if the expression boolean
has a falsy value, i.e. is false
, 0
,
''
, null
or undefined
.
assertEqual(expected, actual[, message])
Passes if expected
and actual
are equal. Equality is determined using the
equals()
method if expected
responds to it, and the ===
operator
otherwise. This assertion also handles deep-equality of arrays and objects,
comparing the elements of the object using equals()
or ===
where
appropriate.
assertNotEqual(expected, actual[, message])
Passes if expected
and actual
are not equal according to the semantics of
assertEqual()
.
assertSame(expected, actual[, message])
Passes if expected
and actual
are the same object, i.e.
expected === actual
.
assertNotSame(expected, actual[, message])
Passes if expected
and actual
are not the same object, i.e.
expected !== actual
.
assertInDelta(expected, actual, delta[, message])
Passes if Math.abs(expected - actual) <= delta
. All values must be numbers.
assertKindOf(type, object[, message])
Passes if object
is an instance of type
. type
can be a JavaScript type
string like 'boolean'
or 'object'
, or a reference to a class or module.
assertMatch(pattern, string[, message])
Passes if string
matches the regular expression pattern
. This can also be
used with any object that responds to match()
as the pattern, for example
assertMatch(new JS.Range(1,10), 5)
.
assertNoMatch(pattern, string[, message])
Passes if pattern
does not match string
(inverse of assertMatch
).
assertNull(object[, message])
Passes if object
is null
.
assertNotNull(object[, message])
Passes if object
is not null
.
assertRespondTo(object, method[, message])
Passes if object
has a property or method named method
.
assertThrows(error[, error2], callback)
Passes if calling the given callback
function throws one of the given error
types, for example assertThrows(TypeError, function() { null.foo() })
.
assertNothingThrown([error, ][message, ]callback)
Passes if calling the given callback
does not throw an error, for example
assertNothingThrown(function() { 1 + 1 })
. You can specify what types of
errors should be caught, for example
assertNothingThrown(TypeError, ReferenceError, function() { 1 + 1 })
; if the
callback
throws any other type of error this will be reported as an error
rather than a test failure.