PHPUnit Testing for API
Step 1 - Starting Docker Container
From the ~/Documents/elentra-developer directory enter:
docker-compose upThis will start all relevant containers.
Step 2 - Seeding the database
From the ~/Documents/elentra-developer directory, shell into the docker container:
./developer shellThis will open a Command Line Interface (CLI) inside the virtual server To seed the database, run the Elentra seed script (WARNING: you will lose data in existing databases and the contents of your config.inc.php file):
install-elentrathis will drop all the databases, recreate them, and seed the database tables with data from the Seeder classes.
Step 3 - Creating a PHP Unit Test
Inside the elentra-1x-api/tests directory, go into either the Functional or Unit directory (please ensure what type of test you are creating or it will be rejected during code review if it's in the wrong directory), create a new file. eg:
<?php
namespace Tests\Integration\Locations\Services;
use Entrada\Modules\Locations\Database\Seeds\ClinicalLocationsSeedData;
use Tests\TestCase;
class LocationsServiceTest extends TestCase
{
private $locationsService;
public function setUp(): void
{
parent::setUp();
$this->locationsService = $this->app->make('Entrada\Modules\Locations\Services\LocationsService');
}
/**
* @test
* @return void
*/
public function baseTest() : void {
$locations = $this->locationsService->listall();
$this->assertEquals($locations, ClinicalLocationsSeedData::getClinicalLocations());
}
}The setUp() method will instantiate any objects required for running tests. These are created by specifying the complete namespace path to the file itself.
the test methods must have the annotation for a test in the comment block:
/**
* Set parameters for submission
* @test
*/Without this, the method will be ignored when the tests are run.
Step 4 - Running php unit
from the /var/www/vhosts/elentra-1x-api directory, type in:
composer testThis will run all Functional and Integration tests.
To test a single file, type:
composer test-single <path-to-file>Troubleshooting
Make sure your elentra-1x-api/phpunit.xml has test suites for both Functional AND Integration specified:
<testsuites>
<testsuite name="Functional">
<directory suffix="Test.php">./tests/Functional</directory>
<directory suffix="Test.php">./tests/Integration</directory>
</testsuite>
</testsuites>Last updated