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.
