У меня есть 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
Обновленное решение
Это так же просто, как и предполагал ответ Джечелона, я его обдумал.Решение состоит в том, чтобы создать тест PHPUnit и предварительно назначить переменные, переданные в taskRunner
для имитации объектов.В реальном сценарии простая проверка перед созданием реальных объектов позволяет использовать тот же сценарий для тестирования и производства:
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