On 15 Jul 2010, at 14:55, Chuck Remes wrote: > > On Jul 14, 2010, at 4:20 PM, Matt Wynne wrote: > >> >> You can do this, by using a test spy to remember the value of foo passed >> into the stubbed constructor and then later comparing it: >> >> let(:foo) { Foo.new } >> >> it "should allocate a helper class Foo" do >> actual_foo = Bar.should_receive(:new) do |the_foo| >> the_foo >> end >> actual_foo.should == foo >> end >> >> Whether you want to do this though, is another question. I think it's a bit >> of an anti-pattern personally. I'd probably let acceptance tests catch >> mistakes in this kind of thing, and concentrate on speccing the interaction >> between Foo and Bar once you've got the instances spun up. > > For those following along at home, this exact technique did not work. The > +actual_foo+ variable was holding some mock value instead of the real self > value.
Sorry. Do we think this is a bug in rspec? I'd have expected the block to return the last evaluated value. But is that just me? > > I fixed it by assigning to a variable inside the block that had been defined > outside the block (avoiding block scope issues). > > let(:foo) { Foo.new } > > it "should allocate a helper class Foo" do > actual_foo = nil > Bar.should_receive(:new) do |the_foo| > actual_foo = the_foo > end > > actual_foo.should == foo > end > > This succeeds. > > Thanks to all for your help. > > cr > > _______________________________________________ > rspec-users mailing list > rspec-users@rubyforge.org > http://rubyforge.org/mailman/listinfo/rspec-users cheers, Matt http://blog.mattwynne.net +44(0)7974 430184 _______________________________________________ rspec-users mailing list rspec-users@rubyforge.org http://rubyforge.org/mailman/listinfo/rspec-users