pava
Version:
Parameterized tests for ava!
116 lines (96 loc) • 2.97 kB
Markdown
<h1 align="center">
pava
</h1>
<div align="center">
<a href="https://npmjs.org/package/pava">
<img src="https://badgen.now.sh/npm/v/pava" alt="version" />
</a>
<a href="https://github.com/TomerAberbach/pava/actions">
<img src="https://github.com/TomerAberbach/pava/workflows/CI/badge.svg" alt="CI" />
</a>
<a href="https://bundlephobia.com/result?p=pava">
<img src="https://badgen.net/bundlephobia/minzip/pava" alt="minzip size" />
</a>
</div>
<div align="center">
Parameterized tests for <a href="https://github.com/avajs/ava">ava</a>!
</div>
```sh
$ npm i pava
```
```js
import test from 'ava'
import parameterized from 'pava'
import { mySerialize, myDeserialize } from './my-code.js'
// Writing your test like this...
parameterized(
test,
`integer serializing and deserializing`,
{
zero: 0,
negative: -4,
positive: 5,
large: 100000,
},
(t, integer) => {
t.is(myDeserialize(mySerialize(integer)), integer)
},
)
// Is the same as writing it like this!
test(`integer serializing and deserializing - zero`, t => {
t.is(myDeserialize(mySerialize(0)), 0)
})
test(`integer serializing and deserializing - negative`, t => {
t.is(myDeserialize(mySerialize(-4)), -4)
})
test(`integer serializing and deserializing - positive`, t => {
t.is(myDeserialize(mySerialize(5)), 5)
})
test(`integer serializing and deserializing - large`, t => {
t.is(myDeserialize(mySerialize(100000)), 100000)
})
// And writing your test like this...
parameterized(
test,
`integer serializing and deserializing`,
[],
(t, integer) => {
t.is(myDeserialize(mySerialize(integer)), integer)
},
)
// Is the same as writing it like this!
// Note: the titles aren't as nice for large test case objects
test(`integer serializing and deserializing - 0`, t => {
t.is(myDeserialize(mySerialize(0)), 0)
})
test(`integer serializing and deserializing - -4`, t => {
t.is(myDeserialize(mySerialize(-4)), -4)
})
test(`integer serializing and deserializing - 5`, t => {
t.is(myDeserialize(mySerialize(5)), 5)
})
test(`integer serializing and deserializing - 100000`, t => {
t.is(myDeserialize(mySerialize(100000)), 100000)
})
// You can also use any ava test interface!
parameterized(test.serial /* ... */)
parameterized(test.failing /* ... */)
parameterized(test.only /* ... */)
parameterized(test.skip /* ... */)
parameterized(test.todo /* ... */)
// etc.
```
See the
[](https://github.com/TomerAberbach/pava/blob/main/src/index.d.ts)
for more documentation.
Stars are always welcome!
For bugs and feature requests,
[](https://github.com/TomerAberbach/pava/issues/new).
For pull requests, please read the
[](https://github.com/TomerAberbach/pava/blob/main/contributing.md).
[](https://github.com/TomerAberbach/pava/blob/main/license)
This is not an official Google product.