Awesome! Thanks, Scott and David. That was some intense turn-around.

-Adam

On Tue, Jul 14, 2009 at 9:15 PM, David Chelimsky <dchelim...@gmail.com>wrote:

> On Mon, Jul 13, 2009 at 1:17 PM, Scott Taylor<sc...@railsnewbie.com>
> wrote:
> >
> > On Jul 13, 2009, at 2:15 PM, Scott Taylor wrote:
> >
> >>
> >> On Jul 13, 2009, at 2:12 PM, David Chelimsky wrote:
> >>
> >>> On Mon, Jul 13, 2009 at 1:04 PM, Scott Taylor<sc...@railsnewbie.com>
> >>> wrote:
> >>>>
> >>>> 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.
> >>>
> >>> It also only works as long as that method keeps its name :) That
> >>> method is explicitly :nodoc:'d which indicates that it is an internal
> >>> method and therefore subject to change. Not saying I plan to change
> >>> it, just that of now it is not a public API.
> >>>
> >>> That said, this thread suggests that we need a public API for
> >>> resetting partial stubs like this. I'm thinking something more
> >>> intention revealing like tear_down_rspec_stubs or something like that.
> >>> Thoughts? Recommendations?
> >>
> >> I'd like unstub! to match stub!.
> >>
> >> Might also consider renaming rspec_reset, or making it part of the
> public
> >> api.
> >
> >
> > BTW, I'd also be willing to contribute a patch for unstub!, if it is so
> > desired.
>
> FYI - Scott submitted this patch and I just merged it, so you should
> now be able to unstub! Time.now mid-example.
>
>
> http://github.com/dchelimsky/rspec/commit/281dc54d4556fed35b62e2f1b86a13e443dcd6e8
>
> Cheers (and thanks, Scott!),
> David
>
>
> >
> > Scott
> >
> >
> >>
> >> Scott
> >>
> >>
> >>>
> >>>> 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
> >>>>
> >>> _______________________________________________
> >>> 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