У меня странное поведение в проекте Laravel 5.5.У меня настроены и работают некоторые функциональные тесты, и мне нужно проверить, что определенный маршрут вернет 404, если переданный идентификатор не существует.У меня есть явная привязка модели, установленная в RouteServiceProvider
для моей Note
модели
Route::bind('note', function($value){
return Note::where('id', $value)->first() ?? abort(404);
});
Это работает для моего теста получения маршрута.Этот тест ниже проходит, как и ожидалось.($this->headers
- это просто некоторые биты, которые я установил в методе setUp, который необходим для многих тестов)
/** @test */
public function error_received_if_note_does_not_exist()
{
$this->withExceptionHandling();
$response = $this->json('GET', '/api/v1/note/1', [], $this->headers);
$response->assertStatus(404);
}
, но этот для маршрута удаления не удался ...
/**
* @test
* @expectedException \Illuminate\Database\Eloquent\ModelNotFoundException
*/
public function error_received_if_note_not_found()
{
$this->withExceptionHandling();
$response = $this->json('DELETE', '/api/v1/note/1', [], $this->headers);
$response->assertStatus(404);
}
с сообщением Failed asserting that exception of type "\Illuminate\Database\Eloquent\ModelNotFoundException" is thrown.
Я понимаю, что технически исключение является правильным, но я хочу утверждать, что я получаю код ошибки 404.
Вот маршруты / api.phpфайл
Route::apiResource('note', 'NoteController')->only([
'show',
'destroy'
]);
Я вырываю волосы.Любые идеи приветствуются.