开发者

integration testing command line PHP

I've got a PHP script that runs at the command line, executing classes that are already unit tested with PHPUnit.

However, I'd like to verify that the script itself has no logical errors and runs properly.

// require classes
require_once 'injectedClass.php';
require_once 'DBClass.php';
require_once 'taskEngine.php';

$injectedObj = new injectedClass;
$dbObj = new DBClass;

$taskRunner = new taskEngine($injectedObj, $dbObj);

$taskRunner->task1()->task2();

$taskRunner->finish();

//etc

Updated Solution

It is as simple as djechelon's answer suggested, I was overthinking it. The solution is to create a PHPUnit test and pre-assign the variables passed into the taskRunner to mock objects. In the live script, a simple check before creating real objects allows the same script to be used for testing and production:

test:

$injectedObj = $this->getMock('injectedClass');
$dbObj = $this->getMock('DBClass');

require_once '/path/to/live/script.php';

$this->assertTrue($taskRunner->finished);

script:

// require classes

if(!isset($injectedObj)) {
    $injectedObj = new injectedClass;
}
if(!isset($开发者_运维百科dbObj)) {
    $dbObj = new DBClass;
}

$taskRunner = new taskEngine($injectedObj, $dbObj);

// run tasks


Can't you create a PHPUnit test for your script?

You could perform an integration test by hand, creating a script that runs your script with a set of given input parameters and compare its output to what you could expect.

Beware of the chicken-and-egg problem: your testing script cannot be tested itself by a test bench...

Anyway I'm not sure you need testing your script if it's so simple. A few manual runs might suffice...

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜