スタブ クラスを返すラムダを作成しようとしています。これは私が持っているものです:
engine_stub = lambda { |valid|
Class.new {
def valid?(address)
valid
end
}
}
valid?
ラムダは、インスタンス メソッドが常にラムダに渡された値を返すクラスを返す必要があります。このコードは次のエラーで失敗します。
NameError: undefined local variable or method `valid' for #<#<Class:0x007f4bf0ebd
0f0>:0x007f4bf0ebcd08>
したがって、メソッドがラムダ スコープにアクセスできないことは明らかです。私もこれを試しました:
engine_stub = lambda { |valid|
stub_class = Class.new
def stub_class.valid?(address)
valid
end
return stub_class
}
代わりに、次のエラーが発生します。
NoMethodError: undefined method `valid?' for #<#<Class:0x007fecbada1138>:0x007fec
bada0df0>
valid?
そのため、インスタンス変数の作成に失敗しました。
概要
ラムダに渡された値を返すengine_stub
1つのインスタンスメソッドを持つクラスを返すようにラムダを取得しようとしています。valid?
どうすればいいですか?