Я создаю HTTP-тесты для существующего приложения laravel, как описано в документации. Тесты выглядят примерно так:
public function testSomething()
{
$this->get('/something')->assertOk();
}
Приложение имеет несколько конечных точек, которые используют метод HTTP SEARCH, объявленный следующим образом:
Route::addRoute('SEARCH', '', 'SomeController@index');
Однако в тестовом классе нет метода search('/something')
.
Есть ли способ проверить маршрут с помощью пользовательских методов HTTP?
Laravel реализует сокращенный метод для наиболее часто используемого HTTP-глагола, но не для всех. Итак, если вы присмотритесь к $this->get('...')
, он реализован так:
В \Illuminate\Foundation\Testing\Concerns\MakesHttpRequests
public function get($uri, array $headers = [])
{
$server = $this->transformHeadersToServerVars($headers);
$cookies = $this->prepareCookiesForRequest();
return $this->call('GET', $uri, [], $cookies, [], $server);
}
Итак, для вашего варианта использования вы можете вызвать
$this->call('SEARCH', '/something', [], $cookies, [], $server)->assertOk();