2

我是 Rails 新手,所以可能我错过了一些明显的东西......我正在尝试编写一个使用 Mongodb 和 Mongoid gem 的 Rails 应用程序。

我在测试时遇到了一些麻烦。我想检查从 db 内容生成的 html 表是否正确。

我正在使用 Fabrication 在测试数据库中生成数据。

我的问题是生成的数据不可用于测试。为了使测试正确失败/通过,我必须运行它两次并避免清空集合。但这会给其他测试带来麻烦。

规格:需要'spec_helper'

describe "OperatorsPages" do
  let(:operator) { Fabricate(:operator) }
  subject { page }

  before do
    sign_in_operator operator
  end

  describe "index page " do
    before(:all) do
      3.times { Fabricate(:operator) }
      visit operators_path
    end


    after(:all) do
      Operator.all.destroy
    end

    Operator.all.each do |operator|
      it { should have_selector 'td', text: operator.name }
      it { should have_selector 'td', text: operator.email }
    end
  end
end

如果测试针对空 db Operators.all.each.to_a 运行,则不会检查循环内的断言。如果我第二次运行它,则循环工作,但(显然)只有当我删除 after(:all) 过滤器时

如何让这个测试在第一次正确运行并在之后留下一个空集合?

4

0 回答 0