I find myself using this pattern quite a bit. rspec 1.30 ruby 1.9.1, 1.9.2-rc2, jruby 1.51 all on osx 10.6.4
class Foo def initialize @bar = Bar.new end end context "init" do it "should allocate a helper class Bar" do Bar.should_receive(:new) Foo.new end end That all works well and as expected. Where I get stuck is when I change the signature for Bar to accept an argument from Foo like so: class Foo def initialize @bar = Bar.new self end end # try 1 context "init" do it "should allocate a helper class Bar" do Bar.should_receive(:new).with(self) # self refers to rspec here Foo.new end end # try 2 context "init" do let(:foo) { Foo.new } it "should allocate a helper class Bar" do Bar.should_receive(:new).with(foo) # foo is a different instance Foo.new end end # try 3 context "init" do it "should allocate a helper class Bar" do Bar.should_receive(:new).with(instance_of(Foo)) # works but seems wrong Foo.new end end I have tried lots of techniques for setting an argument expectation in my spec, but none of them work completely. How do others solve this? Or have I discovered a spec anti-pattern? If this is an anti-pattern, what is the suggested programming technique to avoid it? cr _______________________________________________ rspec-users mailing list rspec-users@rubyforge.org http://rubyforge.org/mailman/listinfo/rspec-users