Ниже приведено покрытие codecov моего приложения cakephp 3. Как написать модульный тест, который покрывает ошибку флэш-памяти?
Или вас интересует, как написать утверждение о том, что флеш-сообщение было сгенерировано в таком случае?





Лучше всего выполнить утверждение в теле ответа. В конце концов, Flash-сообщения — это не что иное, как текст в div. Пример успешного вывода Flash:
<div class = "message success" onclick = "this.classList.add('collapse')">Entity saved</div>
Возможное утверждение для любого успеха или сообщения об ошибке может выглядеть так:
$this->assertResponseContains('<div class = "message success"');
$this->assertResponseContains('<div class = "message error"');
Или вы можете скопировать весь ожидаемый вывод Flash.
Начиная с CakePHP 3.7 вы можете использовать assertFlashMessage и несколько других помощников, есть некоторые примеры в мануале
В вашем случае ваш тестовый код может выглядеть примерно так:
class EmployeesControllerTest extends TestCase
{
use IntegrationTestTrait;
public function testEmployeeAddErrorMessage()
{
$bad_data = ['bad' => 'data'];
$this->post('/employees/add', $bad_data);
$this->assertFlashMessage('The employee could not be saved. Please, try again.');
}
}
Например, публикуя данные, которые не соответствуют правилам проверки/применения таблицы
Employees.