On Sep 30, 2011, at 2:48 PM, Patrick J. Collins wrote:

> Am I correct in understanding that the point of using let is that it can
> minimize database calls due to memoization?
> 
> describe "#something" do
> 
>  let(:something) = Something.groovy_scope
> 
>  it "does x" do
>    something.first.x.should have_coolness
>  end
> 
>  it "does y" do
>        something.first.y.should_not have_coolness
>  end
> 
> end
> 
> vs.
> 
> describe "#something" do
> 
>  before :each do
>    @something = Something.groovy_scope
>  end
> 
>  it "does x" do
>        @something.first.x.should_not have_coolness
>  end
> 
>  it "does y" do
>        @something.first.y.should_not have_coolness
>  end
> 
> end
> 
> ...
> 
> Is that the proper usage?

Proper usage, sure, but the memoization is only within each example - not 
across examples. That way you can do this:

let(:thing) { Thing.new }

it "does something" do
  thing.blah
  thing.whatever
  thing.yet_again
end

In that case each reference to thing returns the same object.

Make sense?
_______________________________________________
rspec-users mailing list
rspec-users@rubyforge.org
http://rubyforge.org/mailman/listinfo/rspec-users

Reply via email to