On Tue, Jul 28, 2009 at 4:57 PM, David Chelimsky<[email protected]> wrote:
>> for arguments. Any way to tell rspec that a method might be called
>> with argument A or B (or C) ? :)
>
> There is no way to specify A or B, but you can stub both and set
> expectations about the resulting behavior that tie back to the stub
> values you set up. For example:
>
> @thing = stub_model(Thing)
> Thing.stub!(:new).and_return(@thing)
> Thing.stub!(:create).and_return(@thing)
> Thing.stub!(:create!).and_return(@thing)
>
> If you do that in a before(:each) block, now the implementation can
> use any of those methods and set expectations like
> assigns[:thing].should == @thing, etc. This effectively does what you
> are doing, but not in the most explicit way.

I think though that the OP want's to set a message expectation with
variation on the arguments, NOT which message.

Something like

   @some_object.should_receive(:some_message).with(any_of(a, b, c))

As long as you don't need to set different return values for different
arguments, that could be done with a new ArgumentMatcher.

-- 
Rick DeNatale

Blog: http://talklikeaduck.denhaven2.com/
Twitter: http://twitter.com/RickDeNatale
WWR: http://www.workingwithrails.com/person/9021-rick-denatale
LinkedIn: http://www.linkedin.com/in/rickdenatale
_______________________________________________
rspec-users mailing list
[email protected]
http://rubyforge.org/mailman/listinfo/rspec-users

Reply via email to