0
我有一个运行在命令行的PHP脚本,执行已经使用PHPUnit进行单元测试的类。集成测试命令行PHP
不过,我想验证脚本本身没有逻辑错误和正常运行。
// 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
我想我没有描述我的问题非常正确,我更新了问题。 – 2010-10-12 00:19:55