Любая идея о том, как я могу проверить содержимое флэш-сообщения контроллера CakePHP в тестировании phpunit? Мне нужно проверить это:
if ($var == "yes") {
//do something
} else {
$this->Flash->error(__('Invalid username or password, try again;));
}
Согласно документация, если вы используете версию 3.4.7 или более позднюю, вы можете использовать функцию enableRetainFlashMessages () перед выполнением get / post / what. Затем вы можете проверить наличие флеш-сообщения с помощью assertSession ().
Пример:
$this->enableRetainFlashMessages();
$this->get('call-your-public-controller-function-here');
$this->assertSession('Invalid username or password, try again', 'Flash.flash.0.message');
Я заявил «в соответствии с документацией», потому что сейчас я на самом деле использую старую версию (3.1.13), которая не включает этот метод, поэтому я лично не тестировал приведенный выше код.
ОДНАКО … Я обнаружил, что с версией, которую я использую, я могу делать то же самое, не вызывая enableRetainFlashMessages (). Используя assertSession (), я могу проверить наличие ожидаемого сообщения, используя процесс, описанный выше. Я предполагал, что это не сработает, но это сработало! (Этого никогда не бывает …)
Других решений пока нет …