Работа с компонентом Security в тестовом примере CakePHP 2 - PullRequest
0 голосов
/ 18 ноября 2011

Я пытаюсь протестировать действие CakePHP, связанное с формой регистрации, защищенной компонентом Security.Я настроил компонент в UsersController следующим образом:

public $components = array(
  'Security' => array('unlockedFields' => array('password_again')),
);

Я могу выполнить действие в браузере, но всякий раз, когда я запускаю тестовый пример, он завершается неудачей со следующим сообщением:

"The request has been black-holed"

Я пытался отключить проверку внутри тестового примера несколькими способами:

$this->Users->Security->enable = false;
$this->Users->Security->validatePost = false;
$this->Users->Components->disable('Security');
$this->Users->Security = null; // desperate measure :)

// still fails
$this->testAction('/signup', array('data' => array(...), 'return' => 'contents'));

Но тест настаивает на использовании проверки Security запроса POST.Я использую CakePHP 2.0.3 и PHPUnit 3.6.3.

Кстати, я не использую UsersController напрямую, а класс TestUsersController, который CakePHP испек для меня (в качестве замены для generate метод, я думаю).

Как правильно обращаться с компонентом Security в тестовом примере?

1 Ответ

3 голосов
/ 05 декабря 2011

Решение состоит в том, чтобы высмеять контроллер Users и модель User и рассчитывать на метод Security::_validatePost():

$this->Users = $this->generate(
  'Users',
  array(
    'components' => array(
      'Security' => array('_validatePost'),
    ),
    'models' => array('User' => true),
  )
);
$this->Users->Security->expects($this->any())
  ->method('_validatePost')
  ->will($this->returnValue(true));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...