Rspec 3.5.4 - 在之前使用let()(:each)

时间:2017-08-28 07:59:53

标签: ruby-on-rails ruby rspec3

我试着四处查看是否确实记录了let(:X)可以在before(:each)之前安全使用,并在每次“before(:each)”执行之前清除缓存值,这意味着on在before(:each)执行之前,上一个示例中的缓存值不再使用,但是在第一次调用定义的let方法时会生成new on(参见下面的示例)。

来自relishapp之前(:每个)/之前(:示例)的文档 -

https://relishapp.com/rspec/rspec-core/v/3-5/docs/hooks/before-and-after-hooks

“在钩子之前和之后使用以在之前和/或之后执行任意代码 一个例子的主体运行..“

let()文档是relishapp: “使用let来定义一个memoized帮助器方法。该值将被缓存 在同一个例子中多次调用,但不是跨越示例。“

https://relishapp.com/rspec/rspec-core/v/3-5/docs/helper-methods/let-and-let

因此,在每个之前(:每个)/之前(:示例)执行之前,我们将获得由let而不是chached发生的“新鲜”值(这意味着根据文档, before(:each)/ before(:example)block被视为示例的一部分)?我知道它是有道理的,但我没有看到它在某处记录 - 有人可以提供链接到它所写的文档吗?

示例代码:

describe 'SOMETHING' do
  let(:first) { Object.new }

  before do
    stub(first).foo? { true }
  end

  it 'test1' do
    # will first.foo? always returns true here? 
    #Some test work...
  end

  it 'test2' do
    # will first.foo? always returns true here? 

    # any chance the stubbing in the before occurs
    # on the instance from   the previous test before 
    # the value is cleared from the cache?

    #Test2...
  end
end

0 个答案:

没有答案