{"version":1,"pages":[{"id":"-MZdps_BnQBqonkhRJ9t","title":"Labrador AsyncUnit","pathname":"/async-unit","siteSpaceId":"sitesp_3LXzi","description":"Documentation for getting started with writing unit and integration tests with Labrador's AsyncUnit. Combine the power of PHP8 and Amp's Loop to write tests with first-class async support!"},{"id":"-MZdtA3mTKYDuXucZEDQ","title":"Getting Started","pathname":"/async-unit/tutorials/getting-started","siteSpaceId":"sitesp_3LXzi","description":"TestCases are the fundamental building block in AsyncUnit. Write tests and use hooks to setup and tear down necessary state.","breadcrumbs":[{"label":"Tutorials"}]},{"id":"-MZe5z2mq9JZF3dkNLuJ","title":"TestCase Hooks","pathname":"/async-unit/tutorials/testcase-hooks","siteSpaceId":"sitesp_3LXzi","description":"Hooks provide robust functionality to perform operations around each test. Provides equivalent of PHPUnit's setUp and tearDown methods... with full asynchronous support.","breadcrumbs":[{"label":"Tutorials"}]},{"id":"-MZwXjMGGRIVMQcLwbM3","title":"Test Suites","pathname":"/async-unit/tutorials/test-suites","siteSpaceId":"sitesp_3LXzi","description":"Organize TestCases and expose functionality for all of the associated TestCases in one place. A fundamental concept for integration testing capabilities provided by AsyncUnit!","breadcrumbs":[{"label":"Tutorials"}]},{"id":"-M_BTUTHnLySB7uxP2KE","title":"Disabling Tests","pathname":"/async-unit/tutorials/disabling-tests","siteSpaceId":"sitesp_3LXzi","description":"Sometimes you might need to disable a test for a variety of reasons. With AsyncUnit you can disable your tests, TestCases, and TestSuites with the Disabled Attribute!","breadcrumbs":[{"label":"Tutorials"}]},{"id":"-M_HdC_VycYEvDR4Z_cb","title":"Data Providers","pathname":"/async-unit/tutorials/data-providers","siteSpaceId":"sitesp_3LXzi","description":"Sometimes tests need to make the same assertions over many different types of data. Using #[DataProvider] can help reduce the amount of test duplication when you encounter this scenario.","breadcrumbs":[{"label":"Tutorials"}]},{"id":"-M_HiS8U60EITtL6yGle","title":"Making Expectations","pathname":"/async-unit/tutorials/making-expectations","siteSpaceId":"sitesp_3LXzi","description":"Complex test suites need to make expectations about how a test might run that can't be accomplished with the assertion API. Learn how to use expectations as another form of validating tests.","breadcrumbs":[{"label":"Tutorials"}]},{"id":"-MafDd_-6vja53F1pdKZ","title":"Test Timeout","pathname":"/async-unit/tutorials/test-timeout","siteSpaceId":"sitesp_3LXzi","description":"Control runaway async code by ensuring that tests complete within a giving time period using the #[Timeout] Attribute!","breadcrumbs":[{"label":"Tutorials"}]},{"id":"-MZeGSndZ_LQmmOCxRq6","title":"Writing Custom Assertions","pathname":"/async-unit/how-to/writing-custom-assertions","siteSpaceId":"sitesp_3LXzi","description":"Any complex test suite will come across the need to create its own assertions. AsyncUnit aims to make your custom Assertion an easy-to-use, first-class citizen within the testing framework.","breadcrumbs":[{"label":"How To"}]},{"id":"-MZwkSvp6BSPhR4JCXbK","title":"Assertions","pathname":"/async-unit/reference/assertions","siteSpaceId":"sitesp_3LXzi","description":"","breadcrumbs":[{"label":"Reference"}]},{"id":"-MZn0wNAU6FY_TAGGIYS","title":"Events","pathname":"/async-unit/reference/events","siteSpaceId":"sitesp_3LXzi","description":"Events power much of functionality outside of parsing and running your tests. See which events we emit and implement your own functionality!","breadcrumbs":[{"label":"Reference"}]},{"id":"-M_B_61ltidAE4UwowCa","title":"Hooks","pathname":"/async-unit/reference/hooks","siteSpaceId":"sitesp_3LXzi","description":"A comprehensive look at the entire Hook lifecycle for a defined TestSuite and TestCase.","breadcrumbs":[{"label":"Reference"}]},{"id":"-MZeGY-26lPa8fZEO0LA","title":"CLI Tool","pathname":"/async-unit/reference/cli-tool","siteSpaceId":"sitesp_3LXzi","description":"What's a test framework if you can't run it? Bundled with the framework is a Symfony Console application for running your test suites.","breadcrumbs":[{"label":"Reference"}]},{"id":"-MZn08JF5zGnLzq7bBxM","title":"Internal Overview","pathname":"/async-unit/reference/internal-overview","siteSpaceId":"sitesp_3LXzi","description":"The guide for developers contributing to AsyncUnit.","breadcrumbs":[{"label":"Reference"}]},{"id":"-M_5guNaJ1u3tN2gEDuM","title":"AsyncUnit vs PHPUnit","pathname":"/async-unit/asyncunit-vs-phpunit","siteSpaceId":"sitesp_3LXzi","description":"Now that you clicked on the provocative title let's talk about PHPUnit! And why you should be thinking of AsyncUnit as an addition to your PHPUnit tests and not a replacement."},{"id":"-M_5yOiT_Y_smx0Zbyfd","title":"Roadmap","pathname":"/async-unit/roadmap","siteSpaceId":"sitesp_3LXzi","description":"The Roadmap defines what features are currently being worked on and what's next!"}]}