On Feb 19, 2008, at 3:42 AM, David Chelimsky wrote:

> On Feb 18, 2008 8:10 PM, EAW <[EMAIL PROTECTED]> wrote:
>> Hi all,
>>
>> I know that in general, view and controller tests should be isolated,
>> such that controller specs don't test views etc.  However, I think
>> I've run into a situation that might be an exception.
>>
>> My controller uses render_to_string to produce a chunk of HTML that  
>> it
>> passes to a model to be processed.
>>
>> The controller then redirects the user to a different page.  The
>> results of the render_to_string are not seen by the user.
>>
>> Since the controller is calling render_to_string, I've been trying to
>> test that it is rendered correctly in my controller spec.  Because a
>> controller spec normally doesn't render views, render_to_string just
>> returns the path of the view, rather than the rendered output.  This
>> prevents me from testing the output of render_to_string in the
>> controller spec.
>>
>> I can work around the issue by using integrate_views, and I guess
>> that's fine, but shouldn't render_to_string really work in  
>> controllers?
>
> The whole point of isolation is to isolate the code in the controller
> from the code in the view. The two primary reasons for this are that
> it allows you to write controller code before the view exists and it
> keeps failures in views isolated to the view specs (why should a
> controller spec fail because of a typo in a view?).
>
> The fact that the result of rendering is being passed to a model
> instead of a (theoretical) browser should not make a difference,
> should it?
>

I am of two minds on this. On one, I can see testing that the  
controller assigns a template to a variable, and then test that the  
view is as expected in a view spec. On the other hand, if I am doing a  
render to string, then from a testing perspective, I'm assigning a  
variable. Whether that variable goes to the browser or a model  
shouldn't matter, we should enable testing of it as a variable.

> I can see your argument for wanting to be able to treat this example
> differently, and you can, as you pointed out, accomplish that with
> integrate_views.

Perhaps there should be a way to allow render_to_string to render a  
without making all views render.

WDYT?

James Deville
http://devillecompanies.org
[EMAIL PROTECTED]
rspec r3172
rspec_on_rails r3172
rails r8331

>
>
> FWIW,
> David
>
>>
>> Thanks for your input,
>>
>> e.
>> --
>> [EMAIL PROTECTED]
>>
>> "If the answer isn't violence, neither is your silence!"
>>                         -- Pop Will Eat Itself, "Ich Bin Ein  
>> Auslander"
>>
>>
>> _______________________________________________
>> rspec-users mailing list
>> rspec-users@rubyforge.org
>> http://rubyforge.org/mailman/listinfo/rspec-users
>>
> _______________________________________________
> rspec-users mailing list
> rspec-users@rubyforge.org
> http://rubyforge.org/mailman/listinfo/rspec-users






_______________________________________________
rspec-users mailing list
rspec-users@rubyforge.org
http://rubyforge.org/mailman/listinfo/rspec-users

Reply via email to