Hi,

On Thu, Mar 15, 2012 at 20:46, Mohamad El-Husseini
<husseini....@gmail.com> wrote:
> Thanks, Mike. I appreciate the explanation. It's tricky knowing what runs
> when, and what variable is in what scope. It seems like "code smell" to add
> an instance variable to the before block.
>
> I don't understand what advantage one approach has over the other. What
> would you use, the first, that was broken, or the second?

I would probably use `expect`[1]:

  describe "send password reset" do
    let(:user) { FactoryGirl.create(:user) }

    it "generates a unique password_reset_token" do
      expect { user.send_password_reset }.to change(user, :password_reset_token)
    end

    # Or if you want to make sure a token is generated twice
    it "generates a unique password_reset_token each time" do
      user.send_password_reset
      expect { user.send_password_reset }.to change(user, :password_reset_token)
    end

    # or perhaps
    it "generates a unique password_reset_token each time" do
      2.times do
        expect { user.send_password_reset }.to change(user,
:password_reset_token)
      end
    end
  end

Mike


[1]: 
https://www.relishapp.com/rspec/rspec-expectations/v/2-0/docs/matchers/expect-change
_______________________________________________
rspec-users mailing list
rspec-users@rubyforge.org
http://rubyforge.org/mailman/listinfo/rspec-users

Reply via email to