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