2012-07-20 4 views
5

Я разрабатываю приложение в Cake 2.2, и в настоящее время нахожу некоторые модульные тесты. Тесты модели работают нормально, у меня есть некоторые проблемы с проверками контроллера в целом.Cakephp 2.0 mock auth

Ситуации: - большинство действий требует входа пользователя - есть пользовательские компоненты и библиотеки поставщиков - У меня есть светильники для всех таблиц

Проблемы: - Многие действия используют «$ this- -> Auth-> пользователя()»метод, чтобы получить пользовательские данные - Если я написать тест для этого действия, пользователь-данные (очевидно) не несуществующие

Моего (не работает) решения: - Я попытался высмеять компонент auth, чтобы он содержал пользовательский метод и всегда возвращал статический ar луч, содержащий пользовательские данные, но он возвращает нуль, вот код:

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

Он просто продолжает говорить, что метод не был вызван (Altough метод установки внутри контроллера дней называет это точно один раз). Что не так с макетом? Hmmm ..

Любая помощь будет оценена!

-edit- код метода, который проходит испытания:

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

Вы вызываете 'testAction' более одного раза в своем тесте? Это ваш тестовый метод? –

+0

Привет, нет, только один раз, это полный код в этом действии на данный момент, так как он не работает. Я не написал для него другого кода тестирования. –

+0

Также вы можете включить метод, который вы тестируете, помогите узнать, что происходит. –

ответ

1

Может быть с помощью:

$Days->Auth->staticExpects(

, поскольку пользователь() является статическим методом.