Pregunta

La práctica por defecto para la funcionalidad de la unidad de pruebas que se basa en información de la sesión / cookie es utilizar una biblioteca de abstracción. Pero lo que si quiero escribir y prueba unitaria esta biblioteca de abstracción? La documentación para el PHP setcookiefunction dice que la cookie estará disponible en la siguiente solicitud. Con una herramienta de línea de comandos para las pruebas, no hay tal cosa como una "solicitud". Entonces, ¿cómo puede probar la unidad I Con la configuración correcta?

Quiero probar si todos los parámetros de la función setcookie se establecen correctamente por mi biblioteca de abstracción. Esos parámetros se fijan de acuerdo con ciertas condiciones y llamadas de método.

La única solución que se me ocurre es burlarse de la función setcookie con la extensión runkit, que no quiero instalar. Otras ideas?

¿Fue útil?

Solución

I encontró otro, solución muy simple: contenedor de clase A alrededor de la función PHP setcookie que es tan simple, que no necesita ser unidad probada:

/**
 * Wrapper around setcookie function for better testability
 */ 
class Cookiesetter {
  public function setcookie($name, $value = "",  $expire = 0,  $path = "", 
    $domain = "", $secure = false, $httponly = false) {
    return setcookie($name, $value,  $expire, $path, $domain, $secure, $httponly);
  }
}

El método setcookie puede entonces ser burlado. Esto tiene la ventaja adicional de que puedo poner en práctica otros métodos como expireCookie.

Otros consejos

Se puede establecer un valor directamente en la matriz $ _COOKIE actual:

<?php
$_COOKIE['test']='hello';
print_r($_COOKIE);
run_tests();

(esto funciona en modo CLI también). Tenga en cuenta que $ _REQUEST no se actualizará por esto.

Sin embargo si sólo está tratando de manipular las cookies para que posteriormente puede acceder a la sesión, por qué no sólo acceder a la sesión directamente:

<?php
$_SESSION['auth_user']='root';
run_tests();

Pero estamos hablando de las pruebas unitarias aquí - no las pruebas de integración -. Lo que sugiere que el código no está muy bien estructurado

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