let
RSpec は DSL であるため、そのように外側のコンテキストでを使用してテストを行うことはできません。RSpec は、テストを実行する前に、まずサンプルのスペック ファイルを読み取ります。some.each
実際のテストが実行される前に、DSL 解析中にヒットします。
some
これは、サンプル オブジェクトで定義されているため、このエラーが発生しますが、サンプル グループ オブジェクトのコンテキストで実行されますdescribe
。context
これは次の方法で確認できます。
describe 'thing' do
p self.ancestors
#=> [#<Class:0x007fa97a0761f8>, RSpec::Core::ExampleGroup, RSpec::Matchers,
# RSpec::Core::MockFrameworkAdapter, RSpec::Core::SharedExampleGroup,
# RSpec::Core::Pending, RSpec::Core::Extensions::InstanceEvalWithArgs,
# RSpec::Core::ExampleGroup::LetDefinitions,
# RSpec::Core::ExampleGroup::NamedSubjectPreventSuper,
# RSpec::Core::MemoizedHelpers, Object, PP::ObjectMixin, Kernel,
# BasicObject]
it { p selfs }
#=> #<RSpec::Core::ExampleGroup::Nested_1:0x007f8d1b397790 ...>
end