What is ava?
AVA is a test runner for Node.js with a concise API, detailed error output, and process isolation that allows for fast and reliable testing. It supports asynchronous testing, and its design encourages writing tests that run concurrently.
What are ava's main functionalities?
Concurrent Test Execution
AVA runs tests concurrently, which can lead to faster test execution. The example shows two tests, one synchronous and one asynchronous, both of which will run concurrently.
const test = require('ava');
test('foo', t => {
t.pass();
});
test('bar', async t => {
const bar = Promise.resolve('bar');
t.is(await bar, 'bar');
});
Snapshot Testing
AVA supports snapshot testing, which allows you to save the output of your tests and compare it to future test runs. This is useful for ensuring that your code's output remains consistent over time.
const test = require('ava');
test('snapshot', t => {
const obj = {foo: 'bar'};
t.snapshot(obj);
});
Power Assert
AVA uses power-assert to provide detailed assertion messages, making it easier to understand why a test failed. The example shows a failing test with a clear assertion message.
const test = require('ava');
test('power assert', t => {
const x = 'foo';
t.is(x, 'bar');
});
Test Isolation
AVA ensures that each test runs in isolation, preventing side effects from affecting other tests. The example shows how `t.context` can be used to set up data for each test.
const test = require('ava');
test.beforeEach(t => {
t.context.data = {foo: 'bar'};
});
test('test 1', t => {
t.context.data.foo = 'baz';
t.is(t.context.data.foo, 'baz');
});
test('test 2', t => {
t.is(t.context.data.foo, 'bar');
});
Other packages similar to ava
mocha
Mocha is a feature-rich JavaScript test framework running on Node.js and in the browser, making asynchronous testing simple and fun. It provides a variety of interfaces (e.g., BDD, TDD) and supports both synchronous and asynchronous testing. Compared to AVA, Mocha is more flexible but requires more configuration to achieve similar functionality.
jest
Jest is a delightful JavaScript Testing Framework with a focus on simplicity. It works out of the box for most JavaScript projects and includes features like snapshot testing, a built-in mocking library, and code coverage. Jest is more opinionated than AVA and provides a more integrated experience, especially for React applications.
tape
Tape is a tap-producing test harness for Node.js and browsers. It is minimalistic and focuses on providing a simple API for writing tests. Tape does not include features like test runners or reporters, which makes it less feature-rich compared to AVA but also simpler and more lightweight.
ava
WIP - Simple test runner
Install
$ npm install --save-dep ava
Usage
Add it to package.json
{
"scripts": {
"test": "ava"
}
}
Create your test file
var test = require('ava');
test('test something', function (t) {
t.plan(1);
t.assert(true);
});
Run it
$ npm test
License
MIT © Sindre Sorhus