RSpec Kaminari 分页测试没有在应该失败的时候失败

RSpec test for Kaminari pagination doesn’t fail when it should

我想用 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) 行,测试也不会失败。

我怎样才能编写出按预期运行的测试?

确保在测试后删除数据库中创建的 Company 条目。如果不这样做,数据库中将有 50 多个来自以前测试的条目。

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

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

  1. 你访问根路径(得到一个200)
  2. 水豚找不到 2 link 并点击它
  3. 您的测试通过,因为您已成功访问根路径