集成测试命令行PHP

时间:2010-10-11 23:01:06

标签: php phpunit integration-testing

我有一个在命令行运行的PHP脚本,执行已经使用PHPUnit进行单元测试的类。

但是,我想验证脚本本身没有逻辑错误并且运行正常。

// 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

更新了解决方案

就像djechelon的答案所说的那样简单,我正在思考它。解决方案是创建一个PHPUnit测试并将传递到taskRunner的变量预先分配给模拟对象。在实时脚本中,在创建真实对象之前进行简单检查允许使用相同的脚本进行测试和生成:

测试:

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

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

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

脚本:

// require classes

if(!isset($injectedObj)) {
    $injectedObj = new injectedClass;
}
if(!isset($dbObj)) {
    $dbObj = new DBClass;
}

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

// run tasks

1 个答案:

答案 0 :(得分:1)

您不能为脚本创建PHPUnit测试吗?

您可以手动执行集成测试,创建一个脚本,使用一组给定的输入参数运行您的脚本,并将其输出与您期望的结果进行比较。

小心鸡蛋问题:你的测试脚本无法通过测试台进行测试...

无论如何,如果这么简单,我不确定你是否需要测试你的脚本。一些手动运行可能就足够了......