Test Timeout
Control runaway async code by ensuring that tests complete within a giving time period using the #[Timeout] Attribute!
When writing asynchronous unit and integration tests there could be a possibility that your code executes for longer than expected or hangs on an async operation not properly handled. In these situations it can be helpful to fail the test after a defined period of time to ensure other tests can operate and test processing can finish without having to manually kill the process. You can easily add a timeout to a test by adding the #[Timeout] Attribute to the test, TestCase, or TestSuite6. The value provided should be the amount of milliseconds the test is expected to complete in.
1
<?php
2
3
use Cspray\Labrador\AsyncUnit\TestCase;
4
use Cspray\Labrador\AsyncUnit\Attribute\Test;
5
use Cspray\Labrador\AsyncUnit\Attribute\Timeout;
6
7
class MyExceptionTestCase extends TestCase {
8
9
#[Test]
10
#[Timeout(100);
11
public function checkExceptionThrown() {
12
yield new Delayed(150);
13
yield $this->asyncAssert()->floatEquals(3.14, 3.14);
14
}
15
16
}
Copied!
This test will be marked as a failure with a message indicating that it did not complete before the given timeout period.
Last modified 5mo ago
Copy link