Я пытаюсь написать тесты phpunit для нескольких действий контроллера. Кажется, все в порядке, кроме насмешки над фасадом пароля.
Одно из действий («забыл пароль») выглядит так:
if (Auth::check())
//return a redirect since the user is already logged in
switch ($response = Password::remind(Input::only('email')))
{
case Password::INVALID_USER:
//return a redirect with error messages
case Password::REMINDER_SENT:
//return a redirect with success message flushed
}
И Auth, и Password являются фасадами и поставляются с Laravel по умолчанию.
Тестирование части Auth::check()
работает отлично:
Auth::shouldReceive('check')->
once()->
andReturn(false); //or true depending on my test case
Но когда я пытаюсь сделать ту же попытку для вызова Password::remind()
, это не работает:
Password::shouldReceive('remind')->
once()->
andReturn(Password::INVALID_USER);
Я получаю исключение «Отказано в доступе к SQLSTATE», означающее, что приложение пытается получить доступ к БД.
Я также пытался добавить with(array())
в свой тест или даже привязать Mockery::mock('\Illuminate\Auth\Reminders\PasswordBroker')
- ничего из этого не помогло.
Как можно протестировать это действие контроллера? Почему фасад пароля отличается от аутентификации? Что еще я должен попробовать?
Спасибо