Вы можете протестировать процедурный код с помощью PHPUnit.Модульные тесты не привязаны к объектно-ориентированному программированию. Они проверяют единицы кода .В ОО единица кода является методом.В процедурном PHP я предполагаю, что это целый скрипт (файл).
Хотя OO-код проще поддерживать и тестировать, это не означает, что процедурный PHP не может быть протестирован.
За пример, у вас есть этот скрипт:
simple_add.php
$arg1 = $_GET['arg1'];
$arg2 = $_GET['arg2'];
$return = (int)$arg1 + (int)$arg2;
echo $return;
Вы можете проверить это так:
class testSimple_add extends PHPUnit_Framework_TestCase {
private function _execute(array $params = array()) {
$_GET = $params;
ob_start();
include 'simple_add.php';
return ob_get_clean();
}
public function testSomething() {
$args = array('arg1'=>30, 'arg2'=>12);
$this->assertEquals(42, $this->_execute($args)); // passes
$args = array('arg1'=>-30, 'arg2'=>40);
$this->assertEquals(10, $this->_execute($args)); // passes
$args = array('arg1'=>-30);
$this->assertEquals(10, $this->_execute($args)); // fails
}
}
Для этого примераЯ объявил метод _execute
, который принимает массив параметров GET, захватывает выходные данные и возвращает их вместо включения и захвата снова и снова.Затем я сравниваю выходные данные, используя обычные методы утверждений из PHPUnit.
Конечно, третье утверждение не будет выполнено (хотя и зависит от error_reporting), поскольку протестированный скрипт выдаст ошибку Undefined index ,
Конечно, при тестировании вы должны поместить error_reporting в E_ALL | E_STRICT
.