[rspec-users] Can I stub a method on a belongs_to association:

Pat Maddox pergesu at gmail.com
Tue Jun 26 16:33:08 EDT 2007


On 6/26/07, Moses Hohman <moses.hohman at gmail.com> wrote:
> Stub @asset's :video first, i.e.
>
> @mock_video_proxy = mock("assay.video proxy")
> @asset.stub!(:video).and_return(@mock_video_proxy)
> @assay.video.stub!(:hook).and_return @mock_hook
>
> Generally mocking starts to get frustrating when the code you're mocking
> doesn't follow the Law of Demeter. I have been creating helper methods for
> these things, e.g.
>
> def mock_video_proxy
>   @mock_video_proxy ||= begin
>     proxy = mock("assay.video proxy")
>     @asset.stub!(:video).and_return(proxy)
>     proxy
>   end
>   proxy
> end
>
> so you can just use
>
> mock_video_proxy.stub!(:hook).and_return @mock_hook
>
> in any spec. I think there might be a better way, though. I'm not sure it's
> worth it to use mocks in this situation since you're already using fixtures.
> Why not just check the expected outcome of the hook method?
>
> Moses

I don't really want to stub too much since this is kind of an
integration test at the model level.  I also can't check the expected
outcome of the hook method because it makes a network call.

Basically I want to test everything except for the hook method itself,
because that's thoroughly tested elsewhere.  So I just need to make
sure that it gets called.

Pat


More information about the rspec-users mailing list