值得让!在lambdas提供的测试用例中看不到助手

时间:2018-06-05 12:52:47

标签: ruby-on-rails lambda rspec

这是一个非常具体的问题。我在测试中使用lambdas,我有一个与此相似的案例:

RSpec.shared_examples "my behavior" do |my_lambda|
  let!(:my_value) { 17 }
  it "does sth" do
    puts "my_value in my behavior:"
    puts my_value
  end
  my_lambda.()
end

describe "my test" do
  it_behaves_like "my behavior", -> {
    it "does sth else" do
      puts "my_value in my_lambda:"
      puts my_value
    end
  }
end

运行该测试我得到错误,因为变量my_value在我的lambda中不可见:

  

NameError:未定义的局部变量或方法`my_value'

如何在不违反DRY规则的情况下解决此问题?

我已经尝试过这个:

RSpec.shared_examples "my behavior" do |my_lambda|
  lets = -> {
    let!(:my_value) { 17 }
  }
  lets.()
  it "does sth" do
    puts "my_value in my behavior:"
    puts my_value
  end
  my_lambda.(lets)
end

describe "my test" do
  it_behaves_like "my behavior", -> lets {
    lets.()
    it "does sth else" do
      puts "my_value in my_lambda:"
      puts my_value
    end
  }
end

但它会引发同样的错误。

0 个答案:

没有答案