【问题标题】:RSpec test for Kaminari pagination doesn’t fail when it shouldKaminari 分页的 RSpec 测试在应该失败时不会失败
【发布时间】:2015-01-10 17:49:55
【问题描述】:

我想用 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,它现在可以正常工作了!

标签: ruby-on-rails ruby rspec pagination


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2014-08-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-03
      相关资源
      最近更新 更多