CakePHP Модульный тестовый контроллер - PullRequest
2 голосов
/ 05 февраля 2012

Я пытаюсь проверить, что значение вводится в компонент сеанса с объектами CakePHP Mock, но мой тест продолжает терпеть неудачу, утверждая, что метод записи не был вызван. Я отладил это и точно знаю, что метод был вызван, поэтому не уверен, что я делаю неправильно.

Вот код в модульном тесте:

$this->controller = $this->generate('Posts', array(
    'components' => array(
    'Session' => array('write')
)));

$this->testAction(...);

$this->controller->Session
    ->expects($this->any())
    ->method('write')
    ->with('my value here');

Я получаю следующую ошибку:

Ожидание не удалось для имени метода равно, когда вызывается ноль или более раз. Мошеннический метод не существует.

Если я изменяю вызов на ожидает, что будет -> ожидает ($ this-> Once ()), то я получаю эту ошибку:

Ожидание не удалось для имени метода равно, когда вызывается 1 раз (а). Ожидается, что метод будет вызван 1 раз, фактически вызван 0 раз.

Я сделал var_dump для $ this-> Controller, и определенно существует поддельный объект сеанса, и он, похоже, замечает вызов метода write, поэтому я действительно не уверен, почему получаю сообщение об ошибке.

Буду признателен за любой совет!

1 Ответ

2 голосов
/ 09 марта 2012

Код установки макета должен быть перед вызовом $this->testAction(), например:

$this->controller = $this->generate('Posts', array(
    'components' => array(
    'Session' => array('write')
)));

//Add the method mock details here
$this->controller->Session
    ->expects($this->any())
    ->method('write')
    ->with('my value here');

//Then call testAction
$this->testAction(...);

Это должно решить вашу проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...