tag name php testing phpunit procedural

php - get tag name wordpress



Pruebas PHP, para Código Procesal (1)

Puede probar código de procedimiento con PHPUnit. Las pruebas unitarias no están vinculadas a la programación orientada a objetos. Ellos prueban unidades de código . En OO, una unidad de código es un método. En PHP de procedimiento, supongo que es un script completo (archivo).

Si bien el código OO es más fácil de mantener y probar, eso no significa que no se pueda probar el PHP de procedimiento.

Por ejemplo, tienes este script:

simple_add.php

$arg1 = $_GET[''arg1'']; $arg2 = $_GET[''arg2'']; $return = (int)$arg1 + (int)$arg2; echo $return;

Podrías probarlo así:

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

Para este ejemplo, he declarado un método _execute que acepta una matriz de parámetros GET, captura la salida y la devuelve, en lugar de incluir y capturar una y otra vez. Luego comparo la salida usando los métodos de aserción regulares de PHPUnit.

Por supuesto, la tercera afirmación fallará (aunque dependerá de error_reporting), porque la secuencia de comandos probada dará un error de índice no definido.

Por supuesto, al realizar la prueba, debe poner error_reporting en E_ALL | E_STRICT E_ALL | E_STRICT .

¿Hay alguna forma de probar el código de procedimiento? He estado buscando en PHPUnit, que parece ser una excelente manera de crear pruebas automatizadas. Sin embargo, parece estar orientado hacia el código orientado a objetos, ¿hay alternativas para el código de procedimiento?

¿O debería convertir el sitio web a orientado a objetos antes de intentar probar el sitio web? Esto puede llevar un tiempo, lo cual es un problema, ya que no tengo mucho tiempo que perder.

Gracias,

Daniel