2014-01-03 2 views
1

Только что началось создание некоторых модульных тестов для моих контроллеров в приложении CakePHP, однако я полностью смущен тем, как я должен создать макет для компонента Auth, я прочитал CookBook и думал, что у меня есть это правильно, но продолжайте получать эту ошибку.Создание объекта Mock Auth в тесте контроллера CakePHP

Error: Call to a member function allow() on a non-object  

В контроллере я тестирую есть функция beforeFilter со следующим кодом:

public function beforeFilter() { 
    parent::beforeFilter(); 
    $this->Auth->allow('create'); 
} 

В моем тесте я включил следующие:

$Leagues = $this->generate('Leagues', array(
    'components' => array(
     'Auth' 
    ) 
)); 

я играл с staticExpects() также, но это, кажется, не очень влияет (я также не уверен, что мне нужно положить в staticExpects()).

ответ

0

Что вы подразумеваете под макетом? Просто набивка объекта данными, которые вы установили? Ошибка, вы получаете, потому что вы должны использовать

$this->Auth->allow(array('create'))

+0

Что касается того, о чем я говорю: http://book.cakephp.org/2.0/en/development/testing.html#using-mocks-with-testaction - Я пробовал то, что вы предложили, и это делает не работает и не соответствует тому, что предлагается в Книге поваров в отношении Auth-> allow http://book.cakephp.org/2.0/en/core-libraries/components/authentication.html#making-actions- public –

+0

Если я использую ваш код, я получаю следующую ошибку: «Непрямая модификация перегруженного свойства Mock_LeaguesController_173b7f97 :: $ Auth не имеет эффекта» –

+0

Я обновил свой ответ. Попробуй это. Я всегда использовал свой оригинальный ответ, но, похоже, есть более чем один способ сделать это. В этом случае, какую версию Cake вы используете? – user1852176

0

Найдено вопрос - я включил компонент Auth в пределах AppController.php, а не конкретно в контроллере я пытался проверить. Включив его с моим контроллером, ошибки исчезли.

+0

не примет это как ответ, если кто-то не вернется с другим решением, которое не означает, что мне нужно повторно включить компоненты. –

 Смежные вопросы

  • Нет связанных вопросов^_^