Хорошо, я некоторое время пытался найти решения о том, как и почему это происходит, вот оно.
В производственной среде этот фрагмент кода работает нормально.
public function store(Add $request) {
$data = $request->validated();
//.... some other stuff
}
Add
- это класс, который расширяет Illuminate\Foundation\Http\FormRequest
, у него есть только некоторые правила (которые я проверил и не влияет на ошибку, потому что не публикуется)
В моей тестовой схеме у меня есть пара сценариев ios, в основном тестов Acceptence, чтобы убедиться, что все создано (или нет) в соответствии с различными входными данными. Они выполняют такие вызовы, как $this->call($uri, $body, $headers)
, и они работают, как ожидалось, имитируя производственную среду.
Однако я пытаюсь написать спецификацию теста c в контроллер, и он продолжает выдавать мне эту ошибку :
$userController = new UserController();
$request = Add::create('/test', 'POST', $body);
$userController->store($request);
Это выводит ошибку:
Error: Call to a member function validated() on null
vendor/laravel/framework/src/Illuminate/Foundation/Http/FormRequest.php:188
Я пытался вывести то, что возвращает dd($request->validated());
, но здесь происходит сбой.
- Какое решение?
- Почему это происходит?