与水豚的范围和集成测试

时间:2013-04-29 11:46:10

标签: ruby-on-rails ruby ruby-on-rails-3 rspec capybara

如果我的Post模型中有一个范围,我看不到我的帖子列表:

型号:

class Post
  include Mongoid::Document
  include Mongoid::Timestamps
  ...
  scope :last_nine, where(:published.ne => nil).limit(9).order_by([:created_at, :desc])
end

控制器:

def index
 @posts = Post.last_nine.where(locale: locale)
  respond_to do |format|
    format.html
  end
end

与水豚的整合测试:

require 'spec_helper'
describe "Posts" do
  let!(:posts) { FactoryGirl.create_list(:post, 3) }
  subject { page }
  describe "index page should have last nine results" do
    posts.each do |p|
      current_path.should == root_path
      should have_selector "h4 a", :text => post.title
    end
    save_and_open_page
  end
end

我无法使用save_and_open_page方法查看我在capybara输出中的最后九篇帖子。

但是,如果我删除@posts = Post.last_nine.where(locale: locale)并在我的控制器中添加@posts = Post.all

def index
   @posts = Post.all
    respond_to do |format|
      format.html
    end
  end

我的测试与@posts = Post.all一起运行正常,我可以在capybara输出中看到我的帖子列表。

如何使用模型范围测试我与水豚的集成测试?

0 个答案:

没有答案