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。所以没有记录会发生什么
- 你访问根路径(得到一个200)
- 水豚找不到 2 link 并点击它
- 您的测试通过,因为您已成功访问根路径
我想用 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。所以没有记录会发生什么
- 你访问根路径(得到一个200)
- 水豚找不到 2 link 并点击它
- 您的测试通过,因为您已成功访问根路径