これは、RSpec で使用する優れた手法であり、Shoulda および Shoulda-context を使用するプロジェクトでも使用したいと考えています。しかし、それが可能かどうかはわかりません。これを行う方法はありますか?
私が欲しいもの:ネストされたコンテキストの句を参照する外側のコンテキストでsetup
( ) ブロックを定義します。そうすれば、内部コンテキストは、外部で参照される値を構成でき、内部コンテキスト全体で DRY のままにすることができます。before
let
setup
setup
RSpec の例 (この例は単純です。実際の例では、before
複製したくないブロック内にもっと多くのコードがあると仮定してください):
describe Thing do
before do
# Notice that `user` isn't defined here--it's defined in `let` blocks
# in nested contexts below.
login_as user
# Assume there's lots more code here that I would like to keep
# DRY across contexts.
end
context "when logged in as an admin" do
# THIS IS THE MAGIC RIGHT HERE:
let(:user) { Factory(:user, role: "admin") }
it "should ..." ...
end
context "when logged in as a normal user" do
# THIS IS THE MAGIC RIGHT HERE:
let(:user) { Factory(:user) }
it "should ..." ...
end
end
要約すると、shoulda-context と Test::Unit を使用してこれを行うにはどうすればよいですか?
私がすでに試したいくつかのことはうまくいきませんでした:
def
各サブコンテキストでメソッドを再定義します。before_should
各サブコンテキストで。