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 に答える