/ / Le test du contrôleur Rspec échoue après l’utilisation de kaminari pour la pagination - ruby-on-rails, ruby, rspec, pagination, kaminari

Le test du contrôleur Rspec échoue après l'utilisation de kaminari pour la pagination - ruby-on-rails, ruby, rspec, pagination, kaminari

Mes tests de contrôleur utilisant rspec échouent lorsque kaminari est utilisé pour la pagination. Les tests de code et de contrôleur de contrôleur sont indiqués ci-dessous.

app / controllers / courses_controller.rb

def index
@courses = Course.all.page(params[:page]).per(15)
authorize! :read, @courses

respond_to do |format|
format.html # index.html.erb
format.json { render json: @courses }
end
end

spec / controllers / courses_controller.rb

describe "GET index" do
it "assigns all courses as @courses" do
course = create(:course)
get :index, { }
expect(assigns(:courses)).to eq([course])
end
end

SORTIE:

Failures:

1) CoursesController GET index assigns all courses as @courses
Failure/Error: get :index, { }
ArgumentError:
wrong number of arguments (1 for 0)
# ./app/controllers/courses_controller.rb:5:in `index"
# ./spec/controllers/courses_controller_spec.rb:13:in `block (3 levels) in <top (required)>"
# -e:1:in `<main>"

Cependant, si je n'utilise pas la pagination dans le contrôleur, cela fonctionne. Ci-dessous, le code qui n'utilise pas la pagination.

def index
@courses = Course.all
authorize! :read, @courses

respond_to do |format|
format.html # index.html.erb
format.json { render json: @courses }
end
end

Pouvez-vous aider à gérer ce problème. Merci d'avance.

Réponses:

0 pour la réponse № 1

Je pense que tu devrais enlever all à partir de la ligne suivante:

@courses = Course.all.page(params[:page]).per(15)

Alors ça ressemble à ça:

@courses = Course.page(params[:page]).per(15)

Cela semble être plus conforme à la Documentation Kaminari:

To fetch the 7th page of users (default per_page is 25)

User.page(7)

To show a lot more users per each page (change the per_page value)

User.page(7).per(50)

1 pour la réponse № 2

Ce que @dax mentionné ci-dessus a résolu mon problèmel'un des contrôleurs où je sélectionnais tous les cours, mais dans un autre contrôleur où j'utilisais des ressources imbriquées, cela ne fonctionnait pas. J'ai suivi les commentaires de @ArupRakshit et cela fonctionne pour tous les scénarios.

Vous trouverez ci-dessous la solution au problème.

Kaminari.paginate_array(Course.all).page(params[:page]).per(15)