2010-04-27 15 views
11

Soy nuevo en las pruebas, estoy usando PHPUnit para escribir la prueba. Todo el sitio ha sido diseñado utilizando el patrón MVC.Parámetros de POST para la prueba de PHPUnit

Me gustaría probar cada método en mis controladores, el problema es que dichos métodos reciben los parámetros a través de la variable $ _POST. ¿Cómo puedo sobrescribir esta variable?

Gracias de antemano Alejandra

Respuesta

15

El mejor enfoque sería para abstraer la solicitud en una clase separada y no tener acceso a los superglobales en absoluto. De esta forma, desacopla el servidor real y el entorno de solicitud de la aplicación. A continuación, puede burlarse de la Solicitud fácilmente.

+0

Pero hay una necesidad de probar esta solicitud clase separada. ¿Cómo sería el mejor enfoque para hacer esto? –

+0

@ ViktorTodorov con una prueba unitaria. Y si desea probarlo con múltiples SAPI: con una prueba de integración – Gordon

9

Aunque algunos dirán que no es limpia, podría configurar datos en $_POST, antes callng sus métodos: no es de sólo lectura ;-)

17

En primer lugar, si está utilizando Zend_Test, utilice

$this->request->setMethod('POST')->setPost(array(insert array info here)); 

Si no está usando eso, intente esto:

Advertencia: no es la mejor solución, pero funciona!

poner esto en su accesorio métodos setUp

protected function setUp() 
    { 
     parent::setUp(); 
     $_POST = array(); 
    } 

A continuación, antes de llamar a su prueba acaba de hacer algo similar a esto:

$_POST = array(insert array data here) 
+0

La primera parte de esta respuesta fue MUY útil. Gracias. –

+0

Incluso la segunda parte me ayudó con las pruebas TYPO3 y Unit –

Cuestiones relacionadas