Dominus comes with its own little testing framework, which can be used to run simple unit tests.
You can generate tests easily using the dominus cli with the command generate test MyTest.
To create a unit test we begin by creating a new Test suite class in the Tests directory of a Dominus project, you can also create any number of subdirectories if you want to group your test suites further and the framework will scan for them recursively.
Make sure your filename is the same as your class name!
Our test suite class must extend the Dominus\System\Tests\DominusTest base class.
<?phpnamespaceTests;useDominus\System\Tests\DominusTest;useDominus\System\Attributes\TestName;#[TestName('My test suite name')]classMyTestextendsDominusTest{}
<?phpnamespaceTests;useDominus\System\Tests\DominusTest;useDominus\System\Attributes\TestName;useDominus\System\Attributes\TestRequestParameters;useDominus\System\Exceptions\TestFailedAssertionException;useDominus\System\Request;#[TestName('My test suite name')]classMyTestextendsDominusTest{/** * @throws TestFailedAssertionException */#[TestRequestParameters(['myParameter'=>'value',// parameters set here will be used to populate the Request object])]#[TestName('My test case 1')]publicfunctiontest_case_1(Request$request){$this->assert($request->get('myParameter')==='value');}/** * @throws TestFailedAssertionException */#[TestRequestParameters(['myParameter'=>'value',// parameters set here will be used to populate the Request object])]#[TestName('My test case 2')]publicfunctiontest_case_2(Request$request){$this->assert($request->get('myParameter')==='value');}}
Finally, we need to return the test instance so that the test framework can use it;
<?phpnamespaceTests;useDominus\System\Tests\DominusTest;useDominus\System\Attributes\TestName;useDominus\System\Attributes\TestRequestParameters;useDominus\System\Exceptions\TestFailedAssertionException;useDominus\System\Request;#[TestName('My test suite name')]classMyTestextendsDominusTest{/** * @throws TestFailedAssertionException */#[TestRequestParameters(['myParameter'=>'value',// parameters set here will be used to populate the Request object])]#[TestName('My test case 1')]publicfunctiontest_case_1(Request$request){$this->assert($request->get('myParameter')==='value');}}returnnewMyTest();
Now all that remains is to actually run our tests, to do this you can execute the run_tests.php file in the Dominus project root.