Extensible JavaScript test suite module
API (1.9)
aok() → aok
instance
Syntaxes
Properties
- id: identifier or name for the test (defaults to a positive integer)
- test: result or callback (called in the instance's scope)
- pass: message or callback (default: "ok")
- fail: message or callback (default: "FAIL")
- handler: defaults to
aok.prototype.handler
- express: defaults to
aok.prototype.express
- explain: defaults to
aok.prototype.explain
- run: defaults to
aok.prototype.run
- cull: defaults to
aok.prototype.cull
- init: defaults to
aok.prototype.init
Verbose syntax
aok(object)
```js
aok({
id: 'example',
test: function() {
return 'example' === this.id;
}
});
```
Anonymous syntax
aok(test)
for non-object tests
```js
aok(true);
aok(aok instanceof aok);
aok(function() {
return isFinite(this.id);
});
```
Pair syntax
aok(id, test)
1.8+
```js
aok('example', true);
aok('example', function() {
return true;
});
```
Idle syntax
Calling aok()
without arguments creates an idle instance that can manually be run later.
```js
var o = aok();
o.test = true;
o.run();
```
Console methods
uses native console
where available
aok.log(message)
aok.info(message)
aok.warn(message)
aok.error(message)
aok.assert(expression, message)
1.6+
aok.trace()
aok.clear()
1.7+
Utilities
aok.can(fn)
- Get a new function that uses
try
/catch
to test if fn can run.
- ⇒ Function (⇒ boolean)
aok.pass(stack, fn, scope?, limit?)
- Iterate stack to count passes until limit. (example)
- ⇒ number
aok.fail(stack, fn, scope?, limit?)
- Iterate stack to count fails until limit. (example)
- ⇒ number
aok.perform(trials, fn)
- Test how many milliseconds it takes fn to run trials times.
- ⇒ number
aok.race(trials, rivals)
- Test how many milliseconds it takes each rival to run trials times.
- ⇒ Array
aok.result(object, key|fn)
- Get
object[key]
or its method's result if callable.
- ⇒
aok.explain(item?)
- Represent item (or self) as a string.
- ⇒ string
grunt aok
aok 1.5+ includes a simple grunt task for running tests via grunt
Configure files to require
```js grunt.initConfig({ aok: {test: ['./test/'],
extras: ['./test/extras']
}
});
```
Load task 'aok'
```js
grunt.loadNpmTasks('aok');
```
Run 'aok'
tasks
```sh
$ grunt aok
$ grunt aok:test
$ grunt aok:extras
```
Resources
- See a universal GruntFile and test dir for a solid setup
- See test dirs in ryanve packages for examples
Developers
Contribute edits to /src
or report issues
```sh
$ npm install # install dependencies
$ grunt jshint:sub # lint sub dirs
$ grunt aok # run tests
```
Builds have +timestamp in the version number and are made later via grunt
.