优化Rspec测试以避免重复复杂的设置过程

时间:2012-09-28 20:20:52

标签: ruby-on-rails rspec

所以这是我的问题:

我正在为我的Rails模型编写单元测试,我有一整套示例,每个示例都需要相同的设置才能运行。如果我没有弄错的话,为多个RSpec测试设置相同方法的常用方法是使用before(:each)块,如下所示:

describe Model do
  before(:each) do
    # Complex setup
  end
  # Examples
end

不幸的是,需要这种设置的一组示例开始变得相当大,并且为每个测试完成这个复杂的设置过程需要很长时间。我试过这样做:

describe Model do
  before(:all) do
    # Complex setup
  end
  # Examples
end

但是这个方法在我完成之后不会回滚我的设置,这会在以后的测试中导致问题。我真正想要的是做这样的事情:

describe Model do
  around(:all) do |examples|
    transaction do
      # Complex setup
      examples.run
      raise ActiveRecord::Rollback
    end
  end
  # Examples
end

然而,RSpec目前不支持around(:all)钩子。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

最简单的方法是在测试后使用after(:all)块进行清理。