есть метод username
public function username()
{
$value = request()->input('login');
$field = filter_var($value, FILTER_VALIDATE_EMAIL) ? 'email' : 'name';
request()->merge([$field => $value]);
return $field;
}
хочу покрыть его тестами, тест такой
public function usernameFieldTest(UnitTester $I)
{
$name = 'john';
$email = 'john@mail.ru';
$loginController = new \App\Http\Controllers\Auth\LoginController();
$request = new Request();
$request->merge(['login' => $name]);
$I->assertEquals('name', $loginController->username());
$request->merge(['login' => $name]);
$I->assertEquals('email', $loginController->username());
}
Ошибка [ReflectionException] Class request does not exist на поле $I->assertEquals('name', $loginController->username());
соответственно ошибка в том, что из теста не находит метод request() внутри тестируемого метода.
создавать в методе username() реквест через new Request нельзя, т.к. он уже должен существовать
Идеально было бы пробросить реквест username(Request $request) но этот метод переопределяет метод из вендорной библиотеки laravel, поэтому нельзя это добавить