amphp/phpunit-util is a small helper package to ease testing with PHPUnit in combination with the Amp concurrency framework.
Required PHP Version
- PHP 7.0+
composer require --dev amphp/phpunit-util<?php
namespace Foo;
use Amp\ByteStream;
use Amp\PHPUnit\AsyncTestCase;
use Amp\Socket;
class BarTest extends AsyncTestCase
{
// Each test case is executed as a coroutine and checked to run to completion
public function test()
{
$socket = yield Socket\connect('tcp://localhost:12345');
yield $socket->write('foobar');
$this->assertSame('foobar', yield ByteStream\buffer($socket));
}
}This package also provides a PHPUnit TestListener to reset the global event loop after each test, but this is deprecated.
<phpunit>
<!-- ... -->
<!-- DEPRECATED, use AsyncTestCase instead -->
<listeners>
<!-- DEPRECATED, use AsyncTestCase instead -->
<listener class="Amp\PHPUnit\LoopReset" />
</listeners>
<!-- ... -->
</phpunit>