我在尝试运行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
,一切正常。有什么想法吗?
答案 0 :(得分:0)
您需要使用receive_message_chain
。
答案 1 :(得分:0)
我解决了将以下内容添加到我的模型中:
default_scope { order('created_at DESC') }
在我的测试中,ordered
行动不是必需的。