describe
は(ネスト)クラスを作成し、そのクラス内の所与のブロックを評価:
一方
describe 'Foo' do
p self #=> RSpec::ExampleGroups::Foo
describe '' do
p self #=> RSpec::ExampleGroups::Foo::Bar
end
end
it
ブロックは、対応するクラスのインスタンスで評価される:
describe 'Foo' do
it 'foo' do
p self #=> #<RSpec::ExampleGroups::Foo ...>
end
end
def email_ids
でメソッドを定義すると、インスタンスメソッドとなるため、インスタンス内ではit
の中でのみ使用できます。
describe
内のメソッドを利用できるようにするために、あなたはすなわちdef self.email_ids
を経て、クラスメソッドとして定義する必要があります。
describe 'Emails' do
def self.email_ids
%w[[email protected] [email protected] [email protected]]
end
email_ids.each do |email_id|
it "should display #{email_id}" do
end
end
end
出力:
Emails
should display [email protected]
should display [email protected]
should display [email protected]
ます。また、再利用することができますそれをモジュールに入れ、extend
を使用して複数のテストに渡るヘルパーメソッド。より多くの例については、Define helper methods in a moduleを参照してください。
'method'にdoneのような引数を渡したいのであれば、 'procs'はスコープよりも有用です。 – Rhunal
私は同意します。その場合、この解決法は機能しません。あなたの最終目標が何であったかはあなたの質問から明らかではありませんでした。 – David