let
由于 RSpec 是 DSL,因此您无法在外部上下文中使用您的测试。RSpec 在运行测试之前首先读取示例规范文件。它击中some.each
在运行任何实际测试之前,
此错误是因为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