You can use PHPUnit to test procedural code — in this case, I’m testing the output of a website. I have some Selenium tests for UI components but wanted to use the shell executor for functional testing. In the test code, you can populate the _SERVER and _POST (or _GET) arrays and simulate the web environment.
<?php namespace phpUnitTests\CircuitSearch; class CircuitExportTest extends \PHPUnit_Framework_TestCase{ private function _execute(array $paramsPost = array(), array $paramsServer = array() ) { $_POST = $paramsPost; $_SERVER = $paramsServer; ob_start(); include "../../myWebSitePage.php"; return ob_get_clean(); } public function testUsageLogging(){ $argsPost = array('strInput'=>'SearchValue', 'strReportFormat'=>'JSON'); $argsServer = array("DOCUMENT_ROOT" => '/path/to/website/code/html/', "HOSTNAME" => getHostByName(), "SERVER_ADDR" => getHostByName(php_uname('n')), "PWD" => '/path/to/website/code/html/subcomponent/path'); $this->assertEquals('{}', $this->_execute($argsPost, $argsServer)); } } ?>
Running the test, my web output is compared to the static string in assertEquals. In this case, I am searching for a non-existent item, nothing is returned, and I expect to get empty braces. I could use AssertsRegExp or or AssertsStringContainsString to verify the specifics of a real result set.