Pregunta

¿Cuál es la mejor manera de probar las entradas $ _GET y $ _POST en PHPUnit ?

Tengo una clase que limpia las entradas y quiero verificar que funcione correctamente cuando se procesan datos falsos. ¿Existe una manera fácil de configurar las variables de formulario en PHPUnit o debo pasar la validación a una clase / función secundaria que se alimenta de las variables de formulario para probarlas indirectamente?

¿Fue útil?

Solución

Eche un vistazo a la idea de Inyección de dependencia . En pocas palabras, debería alimentar a su código con lo que necesita, en lugar de obtener los datos que necesita ... Aquí hay un ejemplo:

ejemplo sin inyección de dependencia

function sanitize1() {
  foreach(

Eche un vistazo a la idea de Inyección de dependencia . En pocas palabras, debería alimentar a su código con lo que necesita, en lugar de obtener los datos que necesita ... Aquí hay un ejemplo:

ejemplo sin inyección de dependencia

function sanitize2(array &$formData) {
  foreach($formData as $k => $v) {
    // code to sanitize $v
  }
}

sanitize2(

Eche un vistazo a la idea de Inyección de dependencia . En pocas palabras, debería alimentar a su código con lo que necesita, en lugar de obtener los datos que necesita ... Aquí hay un ejemplo:

ejemplo sin inyección de dependencia

function sanitize1() {
  foreach(

Eche un vistazo a la idea de Inyección de dependencia . En pocas palabras, debería alimentar a su código con lo que necesita, en lugar de obtener los datos que necesita ... Aquí hay un ejemplo:

ejemplo sin inyección de dependencia

function testSanitize() {
  $fakeFormData = array ('bio' => 'hi i\'m arin', 'location' => 'San Francisco');
  sanitize($fakeFormData);
  // assert something
}

ejemplo con inyección de dependencia

<*>

¿Ves la diferencia? En su prueba de PHPUnit puede pasar sanitize2 () una matriz asociativa de su elección; Has inyectado la dependencia. Mientras que sanitize1 () está acoplado con $ _POST . $ _POST y $ _GET son conjuntos asociales de todos modos, de modo que en su código de producción puede pasar $ _GET o $ _POST a su función pero en sus pruebas unitarias codificaría algunos datos esperados.

Ejemplo de prueba unitaria:

<*>POST as $k => $v) { // code to sanitize $v } } sanitize1();

ejemplo con inyección de dependencia

<*>

¿Ves la diferencia? En su prueba de PHPUnit puede pasar sanitize2 () una matriz asociativa de su elección; Has inyectado la dependencia. Mientras que sanitize1 () está acoplado con $ _POST . $ _POST y $ _GET son conjuntos asociales de todos modos, de modo que en su código de producción puede pasar $ _GET o $ _POST a su función pero en sus pruebas unitarias codificaría algunos datos esperados.

Ejemplo de prueba unitaria:

<*>POST);

ejemplo con inyección de dependencia

<*>

¿Ves la diferencia? En su prueba de PHPUnit puede pasar sanitize2 () una matriz asociativa de su elección; Has inyectado la dependencia. Mientras que sanitize1 () está acoplado con $ _POST . $ _POST y $ _GET son conjuntos asociales de todos modos, de modo que en su código de producción puede pasar $ _GET o $ _POST a su función pero en sus pruebas unitarias codificaría algunos datos esperados.

Ejemplo de prueba unitaria:

<*>POST as $k => $v) { // code to sanitize $v } } sanitize1();

ejemplo con inyección de dependencia

<*>

¿Ves la diferencia? En su prueba de PHPUnit puede pasar sanitize2 () una matriz asociativa de su elección; Has inyectado la dependencia. Mientras que sanitize1 () está acoplado con $ _POST . $ _POST y $ _GET son conjuntos asociales de todos modos, de modo que en su código de producción puede pasar $ _GET o $ _POST a su función pero en sus pruebas unitarias codificaría algunos datos esperados.

Ejemplo de prueba unitaria:

<*>
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top