Добрый день. Я хочу создать тест для контроллера. Есть три таблицы, roles, categories и categories_roles, связь многие ко многим. Контроллер: PHP: /** * Update connections. * * @return \Illuminate\Contracts\Support\Renderable */ public function update(Request $request) { $input = $request->get('category', []); foreach (Category::all() as $category) { $category->roles()->sync(Arr::get($input, $category->id, [])); } return view('home'); } Не могу сообразить как написать тест, в голове предстовление есть а вот как реализовать не знаю. Как я начал пока делать. Test PHP: /** @test */ public function test_admin_user_can_edit_categories_roles() { $this->actingAs(\App\Models\User::factory()->create(['role_id' => 1])); $input = [ "1" => [ "1" => "1" ], "2" => [ "1" => "1" ], ]; $this->post('/admin/connections', $input); }
Если коротко, то не имея понятия что тестировать, не надо выдавливать из себя хоть что-нибудь. Сначала должна появиться цель тестирования, возможно даже раньше, чем написан код. Словами напиши что именно проверяется, потом думай как в этом убедиться. --- Добавлено --- П.С. Лично мне непонятно что этот код делает.
Я планирую заниматься рефакторингом, а также я занимаюсь изучением laravel. У меня есть форма в которой есть связи Ролей и Категорий. Есть таблица в базе с роляими и категориями, а также связывающая таблица. Role (id, name), Categories (id title), Roles_categories (roles_id, categories_id). Форма при заполнении передает двумерный массив с теми данными которые надо изменить в базе, этим занят контроллер с методом sync(). На входе он получает массив и создает связи в таблице. Мне нужно создать тест для этого контроллера. Я создал вот такой тест, но это не то что мне нужно, он не тестирует контролллер. PHP: /** @test */ public function test_admin_user_can_edit_categories_roles() { $this->actingAs(\App\Models\User::factory()->create(['role_id' => 1])); $category = \App\Models\Category::factory()->create(); $role = \App\Models\Role::factory()->create(); $category->roles()->sync($role); $this->assertDatabaseHas('categories_roles', [ 'categories_id' => $category->id, 'roles_id' => $role->id ]); }