2012-07-20 16 views
5

Estoy desarrollando una aplicación en Cake 2.2, y actualmente estoy escribiendo algunas pruebas unitarias. Las pruebas del modelo funcionan bien, tengo algunos problemas con las pruebas del controlador en general.Cakephp 2.0 aut. De simulación

La situación: - la mayor parte de las acciones requieren un inicio de sesión de usuario - hay componentes personalizados y bibliotecas de proveedores - Tengo accesorios para todas las tablas

El problema: - Muchas acciones utilizan el "$ this -> Auth-> usuario método()" para obtener los datos de usuario - Si escribo una prueba de que la acción, la facilidad de uso de datos es (obviamente) no existant

Mi solución (no funciona): - Traté de burlarme del componente de autenticación, de modo que contenga el método de usuario y siempre devuelva un componente estático. ray que contiene los datos del usuario, sino que devuelve un valor nulo, aquí está el código:

$Days = $this->generate('Days', array('components' => 'Auth')); 
$Days->Auth->expects($this->once())->method('user')->will($this->returnValue(array(..userdata etc.))); 
$result = $this->testAction('/days/settings'); 

sólo sigue diciendo que el método no fue llamado (Altough el método de configuración dentro del controlador Días llama exactamente una vez). ¿Qué hay de malo con la maqueta? Hmmm ..

¡Cualquier ayuda sería apreciada!

operación -Editar- El código del método que se está probando:

public function myDays() 
{ 
    $user = $this->Auth->user(); 
    $days = $this->Day->find('all', array('conditions' => array('user_id' => $user['id'], 'active' => 1))); 
    $this->set('days', $days); 
} 
+0

¿Está llamando 'testAction' más de una vez en su prueba? ¿Es este tu método de prueba completo? –

+0

Hola, no, solo una vez, este es el código completo en esa acción por el momento, ya que no funciona, no escribí otro código de prueba para él ... –

+0

También incluya el método que está probando, podría ayuda a ver qué está pasando. –

Respuesta

1

Tal vez usando:

$Days->Auth->staticExpects(

desde usuario() es un método estático.