PhpUnit и Laravel 5.4, как макетировать данные сеанса во время теста

Я тестирую класс в laravel 5.4 с phpunit, который использует сессию для получения данных. Извлечение данных сеанса работает при непосредственном доступе к ним, когда приложение работает, иначе «сессия (« потребитель »)» возвращает значение, однако, когда я пытаюсь протестировать функцию, которая использует сеанс, я получаю следующую ошибку:

ReflectionException: сеанс класса не существует

Может кто-нибудь, пожалуйста, пролить свет на то, как выполнить настройку данных сеанса во время теста.

Я пытался с помощью:

$this->session()->put([$array_value]) но получаю ошибку «сеанс класса не существует на class_im_testing»

Заранее спасибо за помощь!

public function test_get_user()
{
$mockUser =  [
'id' => 'cf442564-d076-4198-beb5-edef5aa51a69',
'name' => 'John Doe',
'fname' => 'John',
'lname' => 'Doe',
];

session->put('consumer', [
'id' => 'cf442564-d076-4198-beb5-edef5aa51a69',
'name' => 'John Doe',
'fname' => 'John',
'lname' => 'Doe',
]);

$user = $this->repo->getUser();

$this->assertEqual($user, $mockUser);
}

public function getUser()
{
$user = new User(session('consumer'));
return $user;
}

2

Решение

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

Если вы используете стандартный шаблон, вы получите TestCase учебный класс. Это класс, который нужно расширить, чтобы получить такой метод, как $this->withSession,

Это потому, что контрольный пример расширяет рамки TestCase класс, который в свою очередь включает в себя много черт, среди которых есть черта InteractsWithSession которая является чертой, которая на самом деле предлагает метод withSession,

Кроме того, Laravel TestCase также расширяет тестовый пример PhpUnit, так что у вас все еще есть доступ ко всем утверждениям PhpUnit.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]