Mock Auth :: user () в Laravel 6 - PullRequest
1 голос
/ 25 февраля 2020

У меня есть этот код:

// ...
Passport::actingAs($this->user);
$mock = Mockery::mock(User::class);
$mock->shouldReceive('myMethodName')->andReturn(157);
Auth::shouldReceive('user')->once()->andReturn($mock);

Если я позвоню

Auth::user()->myMethodName(); // It returns 157

Но если я позвоню (или другой метод аутентификации)

  Auth::id();
  // it throws Mockery\Exception\BadMethodCallException : Method Mockery_2_Illuminate_Auth_AuthManager::id() does not exist on this mock object

Где проблема?

Ответы [ 2 ]

0 голосов
/ 27 февраля 2020

Наконец я нашел ответ:

$this->user = factory(User::class)->create();
Passport::actingAs($this->user);
$obj = m::mock($this->user)->makePartial()
    ->shouldReceive('myMethodName')
    ->andReturn(123)->getMock();
Auth::setUser($obj);
0 голосов
/ 25 февраля 2020

Вы должны использовать Auth() как:

Auth::user()->id;
...