NotFoundHttpException: ПОЛУЧИТЬ http://localhost/assortments/1/items при выполнении теста

#php #laravel

#php #laravel

Вопрос:

Я написал тест в Laravel. Тем не менее, когда я запускаю тест, он говорит:

SymfonyComponentHttpKernelExceptionNotFoundHttpException: GET http://localhost/assortments/1/items

Тест, который я написал:

 public function testUserCanSeeAllHisItems() {

        $this->withoutExceptionHandling();
        $user = $this->signIn();

        $itemCreate = Item::factory()->create(['user_id' => $user->id]);
        $assortmentId = $itemCreate->assortment()->first()->id;

        $response = $this->get("/assortments/{$assortmentId}/items");

        $response->assertStatus(200);
    }
  

Я попытался найти ошибку в Google, но я не нашел многого. Может ли проблема быть в моих маршрутах?

Web.php

 Route::resource('category', 'CategoryController')->middleware('auth');
Route::resource('assortments/{assortment}/items', 'ItemController')->middleware('auth');
Route::resource('assortments', 'AssortmentController')->middleware('auth');
  

Редактировать:

Я также попробовал следующее:

Route::resource('assortments.items','ItemController')->middleware('auth');

Я тоже пробовал php artisan route:list , и это дает:

/app/Http/Controllers/CategoryController.php): failed to open stream: No such file or directory

Ответ №1:

Ваше определение маршрута неверно.

 Route::resource('category', 'CategoryController')->middleware('auth');

// Wrong definition
Route::resource('assortments/{assortment}/items', 'ItemController')->middleware('auth');

// Correct definition
Route::resource('assortments.items', 'ItemController')->middleware('auth');

Route::resource('assortments', 'AssortmentController')->middleware('auth');
  

Смотрите эту ссылку для получения более подробной информации; https://laravel.com/docs/8.x/controllers#restful-nested-resources

Комментарии:

1. Привет. Спасибо за ответ, я попробовал правильное определение, но оно по-прежнему выдает ту же ошибку.

2. Попробуйте php artisan route:list и отправьте его на свой вопрос, пожалуйста.

3. Привет, я опубликовал это в своем вопросе. Пожалуйста, проверьте редактирование

4. php artisan route:list вызывает ошибку. Это означает, что ваше приложение laravel работает некорректно. Похоже, нам нужна отладка во время выполнения.

5. Ошибка вызвана тем, что я удалил контроллер категории, модель, миграцию и представление вместе с тестами, потому что они больше не нужны. Где-то он все еще включен…