В настоящее время я пытаюсь протестировать контроллер, который использует компонент аутентификации для извлечения идентификатора пользователя. Поскольку я довольно новичок в тестировании на единицу/интеграцию, я понятия не имею, как это сделать. Кроме того, все содержание, которое я мог бы найти для этой конкретной проблемы написана для CakePHP версии 2.Mock auth cakephp 3
функция управления: тест
public function favorite(){
// Particular line where the problem is occurring:
$userId = $this->Auth->User()['id'];
// Get all favorite pictures of the user
$query = $this->UsersPictures->getFavoritePictures($userId);
$results = $query->all();
// Replace the link in the result set by a presigned url of Amazon
foreach($results as $result){
$result->picture->link = $this->Aws->getTokenizedItem($result->picture->link);
}
$this->set([
'success' => true,
'data' => [
'pictures' => $results
],
'_serialize' => ['success', 'data']
]);
}
Интеграция:
public function testFavoriteShouldPass(){
$this->configRequest([
'headers' => [
'Accept' => 'application/json'
]
]);
$this->get('api/pictures/favorite/1.json');
$expected = [
'success' => true,
'data' => [
[
'user_id' => 1,
'picture_id' => 1,
'created' => '2016-04-03T20:35:40+0000',
'modified' => '2016-04-03T20:35:40+0000',
'picture' => [
'id' => 1,
'album_id' => 1,
'description' => 'Lorem ipsum dolor sit amet',
'link' => 'test',
'favorite' => true,
'created' => null,
'modified' => null,
'cover_photo' => true
]
]
]
];
$this->assertEquals($expected, $response);
}
Мой вопрос, как я могу вставьте пользователя с идентификатором по умолчанию 1 для $ this-> Auth-> User() ['id']. Я видел в других вопросах, которые мне нужно использовать что-то, что выглядит следующим образом:
$this->_controller->Auth
->staticExpects($this->any())
->method('user')
->will($this->returnValue([
'id' => 1,
'username' => 'admin',
'created' => '2013-05-08 00:00:00',
'modified' => '2013-05-08 00:00:00',
'email' => '[email protected]',
]));
Однако, я прочитал, что staticExpects осуждается от PHPUnit версии 3.8 (я использую 5.2). Как мне это издеваться?
Я думаю, что вы не поняли вопрос. Проблема в том, что я хочу назначить фиксированное значение $ this-> Auth-> User ('id') во время тестирования (например, user_id always 1). Таким образом, я могу проверить, работают ли действия контроллера, как они должны быть. – markvdlaan93