Hi, I'm trying to mock the scope.
Test = lambda { kill(333) } app = double("test") app.should_receive(:kill).with(333).once app.instance_eval Test It will say that kill method miss in app. And to stub a kill method will not help. Can I only define a new class to test it? Thanks. On Dec 26, 2010, at 1:25 PM, David Chelimsky wrote: > On Sun, Dec 26, 2010 at 12:05 AM, Zhi-Qiang Lei <zhiqiang....@gmail.com> > wrote: >> Hi, >> >> I have a lambda. >> >> Test = lambda { kill(333) } >> >> How should I spec if I want to make sure this Test will send kill message >> with 333? Thanks. > > Depends on the scope in which the block will be evaluated. Since kill > is being called with no receiver, its implicit receiver will be the > object in which it is evaluated, so you can mock it on that object, > e.g: > > class Foo > def bar > yield > end > end > > foo = Foo.new > foo.should_receive(:kill) > foo.bar { kill(333) } > > Not sure if that aligns with your situation, but that should give you an idea. > > HTH, > David > >> Best regards, >> Zhi-Qiang Lei >> zhiqiang....@gmail.com >> >> _______________________________________________ >> 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 Best regards, Zhi-Qiang Lei zhiqiang....@gmail.com _______________________________________________ rspec-users mailing list rspec-users@rubyforge.org http://rubyforge.org/mailman/listinfo/rspec-users