On Jul 13, 2009, at 1:46 PM, Scott Taylor wrote:


On Jul 13, 2009, at 1:32 PM, Adam Anderson wrote:

Thanks for the reply, Scott.

What you describe is what is currently being done.

now = Time.now
Time.stub!(:now).and_return(foo_time)
do_stuff
Time.stub!(:now).and_return(now)

However, this is not returning the actual time it is only returning the time set on the first line. I need Time.now to return to its original behavior (i.e., returning the current, actual time).

Well, every time you create a stub, rspec aliased the method before it destroys it:

http://gist.github.com/1ed96143092a02cb727b

It's ugly, but it will work.

Here's another solution, without needing to resort to the library:

http://gist.github.com/e573cb79073805a632c9

Of course, this solution only works if you don't have other stubs on Time.

Scott



You might also want to check out this library:

http://github.com/notahat/time_travel/tree/master

Scott



-Adam

On Mon, Jul 13, 2009 at 9:58 AM, Scott Taylor <sc...@railsnewbie.com> wrote:

On Jul 13, 2009, at 12:09 PM, Adam Anderson wrote:

I can't seem to find a good way to do this. If I stub out Time.now in one of my specs but need to return it to its original functionality then can I remove the stub?

So I'd like to say something like:
Time.stub!(:now).and_return(foo_time)
Time.now # => foo_time
Time.unstub!(:now)
Time.now # => whatever time it actually is


Capture it before you stub it:

real_now= Time.now

Time.stub!(:now).and_return a_later_time

Time.stub!(:now).and_return real_now


Is this possible? I noticed $rspec_mocks.reset_all, but obviously I don't want everything to go away, just this one stub.


-Adam
_______________________________________________
rspec-users mailing list
rspec-users@rubyforge.org
http://rubyforge.org/mailman/listinfo/rspec-users

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

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

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

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

Reply via email to