2012-07-20 7 views
5

Pracuję nad aplikacją w Cake 2.2, i obecnie piszę niektóre testy jednostkowe. Testy modelu działają dobrze, mam pewne problemy z testami kontrolera w ogóle.Cakephp 2.0 mock auth

Sytuacja: - większość działań wymaga logowania użytkownika - istnieją elementy niestandardowe i biblioteki sprzedawca - mam uchwyty dla wszystkich tabel

Problem: - Wiele działań użyć „$ this -> Auth-> user()”metoda, aby uzyskać przez użytkownika dane - jeśli piszę test dla tego działania, użytkownik-DATA jest (oczywiście) nie istnial

moje (nie pracuje) rozwiązanie: - Próbowałem sfałszować komponent auth, aby zawierał on metodę użytkownika i zawsze zwracał statyczny ar ray zawierającego dane użytkownika, ale zwraca null, oto kod:

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

To po prostu powtarza, że ​​metoda nie nazwano (altough metoda ustawień wewnątrz sterownika Days nazywa go dokładnie jeden raz). Co jest nie tak z makietą? Hmmm ..

Każda pomoc będzie doceniona!

-edit- Kod metody, która jest testowana:

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

Czy w swoim teście nazywasz 'testAction' więcej niż jeden raz? Czy to jest twoja cała metoda testowania? –

+0

Witam, nie, tylko raz, jest to kompletny kod w tej akcji na razie, ponieważ to nie działa, nie napisałem dla niego innego kodu testowego. –

+0

Proszę również podać testowaną metodę, może pomóc zobaczyć, co się dzieje. –

Odpowiedz

1

Może przy użyciu:

$Days->Auth->staticExpects(

od użytkownika() to metoda statyczna.