对于Kaminari分页的RSpec测试应该没有失败

时间:2015-01-10 01:33:33

标签: ruby-on-rails ruby rspec pagination

我想用RSpec测试Kaminari的分页。

spec/requests/companies_spec.rb

require 'rails_helper'

describe "Companies" do
  describe "GET /companies" do
    before(:all) { 51.times { FactoryGirl.create(:company) }}
    describe "index" do
      it "has second page" do
        visit root_path
        find("//*[@class='pagination']//a[text()='2']").click
        expect(page.status_code).to eq(200)
      end
    end
  end
end

app/models/company.rb

class Company < ActiveRecord::Base
  paginates_per 50
end

此测试创建了51家公司,以便创建第二页的分页。但即使我注释掉before(:all)行,测试也不会失败。

我怎样才能编写一个符合我预期效果的测试?

2 个答案:

答案 0 :(得分:0)

确保在测试后删除数据库中创建的Company条目。如果不这样做,那么在以前的测试中,您将在数据库中拥有超过50个条目。

您可以使用database_cleaner gem运行测试后删除数据库条目。

答案 1 :(得分:0)

除非期望失败,否则测试不会失败。你唯一的期望是page.status_code是200.所以没有记录会发生什么

  1. 您访问根路径(获得200)
  2. Capybara找不到2链接并点击它
  3. 您的测试通过,因为您已成功访问根路径