【发布时间】:2014-08-27 18:28:16
【问题描述】:
使用 kaminari 进行分页时,我的控制器使用 rspec 测试失败。我的控制器代码和 rspec 测试如下所示。
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
输出:
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
您能帮忙解决这个问题吗?提前谢谢你。
【问题讨论】:
-
你可以试试
get :index, :page => 1.. -
我已经试过了...没有帮助
-
@ArupRakshit 谢谢你的帮助。下面的回复解决了这个问题。
-
Kaminari.paginate_array(Course.all).page(params[:page]).per(15)试试这个并告诉我。Course.all给你数组,所以这应该工作。
标签: ruby-on-rails ruby rspec pagination kaminari