/ / Rspec контролер тест се провали след използване на kaminari за странициране - руби-на релси, руби, rspec, pagination, kaminari

Изпитването на контролера на Rspec се провали след използването на каминари за странициране - рубинки на релси, руби, rspec, pagination, kaminari

Моите контролни тестове, използващи rspec, се провалят при използване на kaminari за pagination.My Controller code & rspec тест са както са дадени по-долу.

ап / контролери / 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

спец / контролери / 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

OUTPUT:

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

Въпреки това, ако не използвам страницирането в контролера, което работи, по-долу е кодът, който не използва страницинацията.

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

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

Можете ли да помогнете да се справите с този проблем. Благодаря ви предварително.

Отговори:

0 за отговор № 1

Мисля, че трябва да премахнете all от следния ред:

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

Така изглежда така:

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

Това изглежда е в по - голяма степен в съответствие с Каминири документация:

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 за отговор № 2

Това, което споменахме по-горе @dax, разреши проблема миедин от контролера, където избирах всички курсове, но в друг контролер, където използвах вложени ресурси, това не се получи. Следвах @ArupRakshit коментари и работи за всеки сценарий.

По-долу е поправянето на проблема.

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