【问题标题】:Rspec generate "it do" from arrayRspec从数组生成“它做”
【发布时间】:2013-05-28 15:24:42
【问题描述】:

如何从数组生成它测试

describe "some test" do
  let(:some) { generated_array }

  # raise error - undefined local variable or method
  some.each do |key|
    it "#{key} test" do
      true
    end
  end

  # will work
  [1,2,3].each do |key|
   ...

end

如何用 RSpec 来实现?

【问题讨论】:

    标签: rspec rspec2 rspec-rails


    【解决方案1】:

    由于 RSpec 是 DSL,因此您无法在外部上下文中使用 let 进行测试。 RSpec 在运行测试之前首先读取示例规范文件。在运行任何实际测试之前,它会在 DSL 解析期间命中 some.each

    此错误是因为在示例对象上定义了 some,但 describecontext 在示例组对象上下文中运行。

    你可以看到这个:

    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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多