4.7.9 Web testing - Testeando las vistas
La mayoria, si no es que lo son todos, los proyectos CakePHP son aplicaciones web. Aunque el testeo unitario es una excelente manera de testear pequeñas porciones de nuestro código, hay ocaciones en la que querriamos hacer un testeo a gran escala. La clase CakeWebTestCase nos brinda una muy buena manera de hacer éste tipo de testing, desde el punto de vista del usuario.
4.7.9.1 About CakeWebTestCase
CakeWebTestCase es una extensión directa de SimpleTest WebTestCase, sin ninguna funcionalidad extra. Toda la funcionalidad encontrada en la documentación de SimpleTest para Testeo Web (Web testing) tambien están disponibles aqui. Esto quiere decir que no se pueden usar los fixtures, y que todos los casos de testeo involucrados en un ABM (alta, baja o modificación) a la base de datos modificarán permanentemente los valores. Los resultados del Test son comparados frecuentemente con los qe tiene la base de datos, por lo tanto, asegurarse que la bd tenga los valores que se esperan, es parte del proceso de construcción del test.
4.7.9.2 Creando un test
Manteniendo las convenciones de los otros tests, los archivos de testeo de vistas se deberán crear en la carpeta tests/cases/views. Claro que se podrian guardar en otra ubicación, pero siempre es bueno seguir las convenciones. Entonces, crearemos el archivo: tests/cases/views/complete_web.test.php
Para escribir testeos web, deberás extender la clase CakeWebTestCase y no CakeTestCase, tal como era en los otros tests:
class CompleteWebTestCase extends CakeWebTestCase
class CompleteWebTestCase extends CakeWebTestCase
Si necesitas hacer alguna inicialización antes de que comience el test, crea el constructor:
function CompleteWebTestCase(){
//Do stuff here
}
function CompleteWebTestCase(){//Do stuff here}
Cuando escribes los test cases, lo primero que vas a necesitar hacer es capturar algun tipo de salida o resultado donde ver y analizar. Ésto puede ser realizado haciendo un request get o post, usando los métodos get() o post() respectivamente. A ambos métodos se le pasa como primer parámetro la url, aunque puede ser traida dinámicamente si asumimos que script de testing está en http://your.domain/cake/folder/webroot/test.php tipeando:
$this->baseurl = current(split("webroot", $_SERVER['PHP_SELF'])); $this->baseurl = current(split("webroot", $_SERVER['PHP_SELF']));
Entonces podremos hacer gets y posts usando las urls de Cake, por ejemplo:
$this->get($this->baseurl."/products/index/"); $this->post($this->baseurl."/customers/login", $data);
$this->get($this->baseurl."/products/index/");$this->post($this->baseurl."/customers/login", $data);
El segundo parámetro del método post, $data, es un array asociativo que contiene post data en el formato de Cake:
$data = array( "data[Customer][mail]" => "user@user.com", "data[Customer][password]" => "userpass");
$data = array("data[Customer][mail]" => "user@user.com","data[Customer][password]" => "userpass");
Una vez que se hizo el request a la página, se pueden utilizar todos los mismos asserts que veniamos usando en SimpleTest.
4.7.9.3 Walking through a page
Todavia no hay una traducion de este texto. Por favor ayudanos y traducirla.. Mas info sobre traduciones
CakeWebTest also gives you an option to navigate through your page by clicking links or images, filling forms and clicking buttons. Please refer to the SimpleTest documentation for more information on that.


























