Small PHP DSL for synchronizing asynchronous operations (busy-waiting).
A simple and useful library recommended especially for testing asynchronous systems. Exspecto allows you to express expectations of an asynchronous system in a concise and easy to read manner. Example:
await()->atMost(1)->until(function() {
return customerStatusIsUpdated();
});
You can use pollInterval
to set how often the condition should be checked (default value is 100 milliseconds):
await()->atMost(3)->pollInterval(200)->until(function() {
return customerStatusIsUpdated();
});
You can also await for given value in case the returning method (closure) could throw an exception:
$value = await()->atMost(3)->pollInterval(200)->on(fn() => getValue());
exspecto - from latin: wait for, await
composer require akondas/exspecto
-
untilAsserted
for example:untilAsserted('UserRepository::size', equaltTo(3))
- support different poll interval strategy (fixed, fibonacci, iterative)
-
ignoreExceptions
do not stop when exceptions occur (ignoreException(string $exceptionClass)
) -
atLeast
-
unitlNotNull
,untilNull
etc.
Exspecto is released under the MIT Licence. See the bundled LICENSE file for details.
Arkadiusz Kondas (@ArkadiuszKondas)