/ / Rspec-Controller-Test schlägt fehl, nachdem man kamarin für die Paginierung verwendet hat - Ruby-on-Rails, Ruby, Rspec, Paginierung, Kaminari

Der Rspec-Controller-Test schlägt fehl, nachdem man Kaminari für die Paginierung verwendet hat - Ruby-on-Rails, Ruby, Rspec, Paginierung, Kaminari

Meine Controller-Tests mit rspec schlägt fehl, während ich kaminari für die Seitennumerierung verwende. Mein Controller-Code und dieser Test sind wie folgt.

app / controller / 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

AUSGABE:

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>"

Wenn ich jedoch nicht die Seitennummerierung im Controller verwende, funktioniert der Code, der keine Seitennummerierung verwendet.

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

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

Kannst du helfen, dieses Problem zu lösen? Vielen Dank im Voraus.

Antworten:

0 für die Antwort № 1

Ich denke, du solltest entfernen all aus der folgenden Zeile:

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

So sieht es aus:

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

Dies scheint eher im Einklang mit der Kaminari-Dokumentation:

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 für die Antwort № 2

Was @dax oben erwähnt hat, löste mein Problem inEiner der Controller, bei dem ich alle Kurse auswählte, aber in einem anderen Controller, wo ich verschachtelte Ressourcen verwendete, funktionierte das nicht. Ich folgte @ArupRakshit Kommentare und es funktioniert für jedes Szenario.

Unten ist die Lösung für das Problem.

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