Как смоделировать аутентификацию пользователя на модульных тестах с Codeception в Laravel 5? - PullRequest
0 голосов
/ 23 октября 2018

Я должен преобразовать свои модульные тесты в коде.Мне нужно использовать функцию loginWithFakeUser () из этой статьи - Как смоделировать аутентификацию пользователя на модульном тесте в Laravel?

public function loginWithFakeUser() {
    $user = new User([
        'id' => 1,
        'name' => 'yish'
    ]);
    $this->be($user);
}

Как использовать $this->be(), когда мой классуже расширяется \Codeception\Test\Unit?Я не знаю, что мне use .. или как правильно пользоваться.Помещение функции loginWithFakeUser () в это:

use Illuminate\Foundation\Testing\Concerns\InteractsWithAuthentication;
use Illuminate\Foundation\Testing\Concerns\InteractsWithSession;

class AdminTest extends \Codeception\Test\Unit {
    use InteractsWithAuthentication;
    use InteractsWithSession;
}

Дает мне ошибку:

[ErrorException] Неопределенное свойство: AdminTest :: $ app

Я не уверен, как мне установить переменную $ app.Пожалуйста, помогите мне.Большое спасибо!

1 Ответ

0 голосов
/ 23 октября 2018

Я смог решить эту проблему путем насмешки над классом Auth.

$oUser = new User([
    'id' => 1,
    'name' => 'yish'
]);

Auth::shouldReceive('check')->once()->andReturn(true);
Auth::shouldReceive('user')->once()->andReturn($oUser);

Где в моем реальном коде он используется как:

if(Auth::check() === true) {
    $sName = Auth::user()->name;
}
...