Это указано в документации по тестированию CakePHP.
http://book.cakephp.org/3.0/en/development/testing.html#testing-actions-that-require-authentication
Тестирование действий, требующих аутентификации. Если вы используете AuthComponent, вам нужно будет заглушить данные сеанса, которые AuthComponent использует для проверки.личность пользователя.Вы можете использовать вспомогательные методы в IntegrationTestCase, чтобы сделать это.Предполагая, что у вас был ArticlesController, который содержал метод add, и этот метод add требовал аутентификации, вы могли бы написать следующие тесты:
public function testAddUnauthenticatedFails()
{
// No session data set.
$this->get('/articles/add');
$this->assertRedirect(['controller' => 'Users', 'action' => 'login']);
}
public function testAddAuthenticated()
{
// Set session data
$this->session([
'Auth' => [
'User' => [
'id' => 1,
'username' => 'testing',
// other keys.
]
]
]);
$this->get('/articles/add');
$this->assertResponseOk();
// Other assertions.
}
Я использовал это
// Set session data
$this->session(['Auth.User.id' => 1]);
У меня действительно есть ролипоэтому мое решение выглядит так:
public function testDisplay()
{
$this->session(['Auth.User.id' => 1, 'Auth.User.role' => 'admin']);
$this->get('/pages/home');
$this->assertResponseOk();
$this->assertResponseContains('CakePHP');
$this->assertResponseContains('<html>');
}