This article describes how to test Pak Php framework applications. The Pak Php framework provides support for unit testing and functional testing of applications.
To test your Pak Php framework application you have to first put your application in test mode. You can do this by setting test_mode
parameter in Configuration.php
To unit test your application, you need to enter the name of your test classes in test_classes
parameter. You can have multiple test classes. Each test class should derive from the base application Test class. The Fully Qualified Class Name (FQCN) of the application Test class is \Framework\Testing\Testing
. Next you have to write test functions in your test class.
The name of each test function must start with Test
and it should be defined as public. The test function takes one parameter as argument which is the test data. A test method has the following signature:
public function TestFunctionName($test_data)
To run your test function from the command line you have to enter following command:
This will run all functions that start with Test in your test class. Alternately you can simply call the index.php script from the browser. Within your test function you can use AssertTrue and AssertEqual functions to test variable values.
Functional testing a Pak Php application implies automatically calling the application functions. The output of the function is tested depending on the type of output. For example if a function returns a string, then the return value is considered to be html and is tested using W3C validator. If the function returns a json string and the string is valid json then the function is considered to be valid.
The options to be tested are given in an array and assigned to the [testing]['test_options'] configuration parameter. If this parameter is omitted or it contains the string "all", then all options are tested.
To start the functional testing you have to use the following command:
Alternately you can simply run the index.php script from browser
It is also possible to automatically generate test data for unit testing and functional testing. To automatically generate test data you have to set the configuration option save_test_data
to true in Configuration.php.
After that you can run your application normally from browser or command line. Each time the application is run, the application parameters are saved to database. Once the parameters are saved they can be used in unit tests and functional tests.
To use the saved test data in unit tests you have to override the LoadTestData function of the base Testing class. This function needs to return the test data that will be given as parameters to the unit test functions. The test data is loaded from the database using FetchLogDataFromDatabase function of the Logging class.
The test data is used automatically for functional tests. When a functional test is run, the framework automatically reads the test data from database and calls the application function with this test data. The function is called for each test data item.