0

所以这是我的问题:

我正在为我的 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) 钩子。有任何想法吗?

4

1 回答 1

0

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

于 2012-09-29T03:49:51.187 回答