0
我減少了冗長了很多相關規範的一個小捷徑方法我寫道:如何轉換Ruby塊並將其作爲參數應用於其他塊?
def association_spec_for(kind, field)
it { expect(subject).to send(kind, field) }
end
這被這樣使用:
describe Student do
association_spec_for :have_many, :courses
association_spec_for :have_one, :transcript
end
現在,我想擴大方式association_spec_for
工作,這樣我可以做到這一點,同時仍保留原始的用例不變:
association_spec_for(:foo, :bar) do |a|
a.baz(:blerp).bloop(:bleep => :blarg)
end
,並把它變成這樣:
it { expect(subject).to send(:foo, :bar).baz(:blerp).bloop(:bleep => :blarg) }
# |----------------------------------|
# This part came from the block
# that was passed to a_s_f.
發生這種情況的最佳方式是什麼?
如果沒有塊被傳遞,這不會失敗嗎? (該塊是可選的。)我想我可以有一個條件。 –
你的問題並不清楚。 – sawa
我會更新這個問題,但這就是我所說的「我想擴展它的工作方式......」。以前的用例不應該中斷。 –