HOW TO WRITE UNIT TEST CASE ON SLIM 3 TO TEST API | Devstringx Technologies

Prerequisites :

-PHP 7.3

-Visual Studio Code

  1. install slim via composer

//run this command on terminal composer require slim/slim:”3.*”

2. install phpUnit

//run this command on terminal

composer require — dev phpunit/phpunit ^7

Now phpUnit is successfully installed you can see in demo/composer.json file and in the vendor folder.

3. Now we have to create demo/phpunit.xml configuration file which is used to configure the PHPUnit

bootstrap=”vendor/autoload.php” –this is used to autoload the library. Colors=”true”- it is used to add the color to the command line.

Verbose=”true”-for showing more information about your test.

stopOnFailure = “false”- the test executed sequentially if any test fails then it stops the execution of the test.

<directory>tests</directory>-this is a tests directory where I wrote all my test cases.

4. Now we have to create our demo/tests folder in our project.

5. Now create the demo/src folder inside the src folder you have to create a file name routes.php in which you will write your Api.

In routes.php file I have created an Api for addition of two numbers.

6. Now we have to setup the autoload to autoload everything from the tests directory in composer.json file.

Write “autoload-dev”: { “psr-4”: { “Tests\\”: “tests/” } } this in your composer.json file And run command-

composer dump-autoload –o

7. Now coming to the demo/tests folder inside tests folder we have to create a Functional folder inside that I have created a BaseTestCase class which is extended from TestCase class.

Inside BaseTestCase class , we have created runApp function passing the $requesMethod(POST,GET),$requestUri(api name),$requestData(array of data), inside this function I have created mock environment objects with custom information. Mock Environment objects are only useful when writing unit tests.after that I have setting up the $request = Request::createFromEnvironment($environment) object.Now adding the requested data if exist.now settingup the response object.create an object $app = new App();

After that process the application $response = $app->process($request, $response) And return the response.

8. Now create the file for testing out api demo/tests/Functional/routesApiTest

In this we have created a class routesApiTest extended from BaseTestCase class If you are writing test case then you always have to write test as a prefix of the function like testaddNum or you can write as I wrote in my case /** * @test */.now create a function addNum inside this function I have called runApp method in which I am passing the 3 parameters first-method which is post,second-api name,third-data array.Now I am using assertEquals mathods in first parameter is what I expect and second parameter $response->getBody() what it returns.

9. Now run the command in terminal

./vendor/bin/phpunit tests

.

Originally published at https://www.devstringx.com on Aug 28, 2021.

Devstringx Technologies is highly recommended IT company for custom software development, mobile app development and automation testing services