Laravel 5.5 тестирует исключение ModelNotFoundException для удаления маршрутов API - PullRequest
0 голосов
/ 23 ноября 2018

У меня странное поведение в проекте 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'
]);

Я вырываю волосы.Любые идеи приветствуются.

1 Ответ

0 голосов
/ 23 ноября 2018

Я думаю, что я понял это, если у кого-то еще есть эта проблема.

В тесте на удаление я удалил строку $this->withExceptionHandling();.Который затем позволяет пройти тест.

Если я сделаю то же самое в тесте get, он не пройдёт.Так что тесту get это нужно, а тесту удаления - нет.

Случайно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...