тестирование интеграции командной строки PHP - PullRequest
0 голосов
/ 12 октября 2010

У меня есть 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

1 Ответ

1 голос
/ 12 октября 2010

Не можете ли вы создать тест PHPUnit для своего скрипта?

Вы можете выполнить интеграционный тест вручную, создав скрипт, который запускает ваш скрипт с набором заданных входных параметров.и сравните его результат с тем, что вы могли ожидать.

Остерегайтесь проблемы курицы и яйца: ваш сценарий тестирования не может быть проверен самим испытательным стендом ...

В любом случае яне уверен, что вам нужно тестировать ваш скрипт, если он так прост.Несколько ручных прогонов может быть достаточно ...

...