How can I write unit / integration tests?
Mutiny provides subscribers for Uni
and Multi
offering helpful assertion methods.
You can use them to test pipelines.
Here is an example to test a Uni
:
| Uni<Integer> uni = Uni.createFrom().item(63);
UniAssertSubscriber<Integer> subscriber = uni
.subscribe().withSubscriber(UniAssertSubscriber.create());
subscriber
.awaitItem()
.assertItem(63);
|
Testing a Multi
pipeline is similar:
| Multi<Integer> multi = Multi.createFrom().range(1, 5)
.onItem().transform(n -> n * 10);
AssertSubscriber<Integer> subscriber = multi.subscribe().withSubscriber(AssertSubscriber.create(10));
subscriber
.awaitCompletion()
.assertItems(10, 20, 30, 40);
|
The assertions do not just focus on good outcomes, you can also test failures as in:
| Multi<Object> multi = Multi.createFrom().failure(() -> new IOException("Boom"));
AssertSubscriber<Object> subscriber = multi
.subscribe().withSubscriber(AssertSubscriber.create(10));
subscriber
.awaitFailure()
.assertFailedWith(IOException.class, "Boom");
|