2012-07-20 13 views
5

Sto sviluppando un'applicazione in Cake 2.2, e sto attualmente scrivendo alcuni test unitari. I test del modello stanno funzionando bene, ho alcuni problemi con i test del controller in generale.Cakephp 2.0 mock auth

La situazione: - la maggior parte delle azioni richiedono un login utente - ci sono componenti personalizzati e librerie dei venditori - Ho infissi per tutte le tabelle

Il problema: - Molte azioni usano il "$ questo -> Auth-> utente() metodo" per ottenere i dati utente - se scrivo un test per l'azione, l'utente-DATA è (ovviamente) non existant

la mia soluzione (non funzionante): - Ho provato a prendere in giro il componente auth, in modo che contenga il metodo utente e restituisca sempre un ar statico ray contenente i dati degli utenti, ma restituisce nulla, ecco il codice:

$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'); 

E 'solo continua a dire che il metodo non è stato chiamato (ospitarci il metodo impostazioni all'interno del controller Giorni chiama esattamente una volta). Cosa c'è di sbagliato nel mockup? Hmmm ..

Qualsiasi aiuto sarebbe apprezzato!

operativa -Editazione- Il codice del metodo in fase di verifica:

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

Stai chiamando 'testAction' più di una volta nel tuo test? È questo il tuo intero metodo di prova? –

+0

Ciao, no, solo una volta, questo è il codice completo in quell'azione per ora, dal momento che non funziona non ho scritto altro codice di test per questo. –

+0

Si prega di includere anche il metodo che stai testando, potrebbe aiuta a vedere cosa sta succedendo. –

risposta

1

Forse utilizzando:

$Days->Auth->staticExpects(

dal utente() è un metodo statico.