Rspec 使用 will_paginate 进行排序
Rspec for a ordering using will_paginate
我在尝试 运行 我的 rspec
测试时遇到了麻烦。问题似乎与以下行有关:
expect(assigns(:posts).count).to eq 2
我得到了 0,但预期是 2。
我的rspec测试:
RSpec.describe Portfolio::BlogController, type: :controller do
let(:posts) {build_stubbed_list(:post, 2)}
let(:post) {build_stubbed :post}
specify '#index' do
expect(Post).to receive(:paginate).with(page: '2').ordered.
and_return( posts.paginate(per_page: 2) )
get :index, page: 2
expect(assigns(:posts).count).to eq 2
expect(response).to render_template 'index'
end
end
我的控制器:
class BlogController < ApplicationController
def index
@posts = Post.order('created_at DESC').paginate(:page => params[:page])
end
end
如果我从我的控制器中删除 order
并从我的测试中删除 ordered
一切正常。有什么想法吗?
您需要使用 receive_message_chain
。
我解决了将以下内容添加到我的模型中的问题:
default_scope { order('created_at DESC') }
ordered
操作在我的测试中不是必需的。
我在尝试 运行 我的 rspec
测试时遇到了麻烦。问题似乎与以下行有关:
expect(assigns(:posts).count).to eq 2
我得到了 0,但预期是 2。
我的rspec测试:
RSpec.describe Portfolio::BlogController, type: :controller do
let(:posts) {build_stubbed_list(:post, 2)}
let(:post) {build_stubbed :post}
specify '#index' do
expect(Post).to receive(:paginate).with(page: '2').ordered.
and_return( posts.paginate(per_page: 2) )
get :index, page: 2
expect(assigns(:posts).count).to eq 2
expect(response).to render_template 'index'
end
end
我的控制器:
class BlogController < ApplicationController
def index
@posts = Post.order('created_at DESC').paginate(:page => params[:page])
end
end
如果我从我的控制器中删除 order
并从我的测试中删除 ordered
一切正常。有什么想法吗?
您需要使用 receive_message_chain
。
我解决了将以下内容添加到我的模型中的问题:
default_scope { order('created_at DESC') }
ordered
操作在我的测试中不是必需的。