[rspec-users] Stubbing helper methods in controller specs when integrate_views is On
Matt Wynne
matt at mattwynne.net
Thu Nov 26 13:23:41 EST 2009
On 25 Nov 2009, at 16:02, Krasimir Angelov wrote:
> Hi all,
>
> I'm using rspec-caching-test-plugin to test caching (obviously) in
> my controller specs. Because views are also involved in caching
> integrate_views have to be turned On.
> The problem comes when mock is passed to a helper, for examle
>
> link_to_profile(profile)
>
> where porfile = mock_model(Profile)
>
> The error thrown is "can't convert Spec::Mocks::Mock into String".
> Usually when dealing with view specs in this case I'm just doing
>
> template.stub!(:link_to_profile => '/link/to/profile')
>
> and specing the helper method in separate helper spec, but in this
> case (controller spec with integrate_views turned On) I have no
> access to template object.
>
> Is there any way to stub helper method or I just have to give away
> mocks and use real records created with FactoryGirl instead?
You have a couple of options, I think:
(1) Try mocking enough of the object's interface that the Rails helper
will happily build a link to it. I think that just means stubbing a
#to_param method on it.
(2) Use rspec-rails' mock_model method to build the mock object, which
will basically do that for you.
(3) Use rspec-rails' stub_model method to build the mock object, which
creates a real model object instance (like FactoryGirl would) except
with the database connection crippled.
Okay that was three options.
cheers,
Matt
http://mattwynne.net
+447974 430184
More information about the rspec-users
mailing list