How can I investigate when a rspec test fails?

For example:

it “re-renders the ‘new’ template” do
# Trigger the behavior that occurs when invalid params are
submitted
Sector.any_instance.stub(:save).and_return(false)
post :create, :sector => {}
response.should render_template(“new”)
end

I have the new template under app/views/sectors but the test says:

SectorsController POST create with invalid params re-renders the ‘new’
template
Failure/Error: response.should render_template(“new”)
expecting <“new”> but rendering with <"">

This can happen if the action is actually redirecting instead of
rendering, one potential way to test this is to change your stubbed
method to return true.

On May 28, 12:59pm, Mauro [email protected] wrote:

SectorsController POST create with invalid params re-renders the ‘new’ template
Failure/Error: response.should render_template(“new”)
expecting <“new”> but rendering with <“”>

Please post the controller action so we can see what’s missing.

On May 28, 1:59pm, Mauro [email protected] wrote:

SectorsController POST create with invalid params re-renders the ‘new’ template
Failure/Error: response.should render_template(“new”)
expecting <“new”> but rendering with <“”>

It sounds like the test is working and that your code is at fault by
the looks of it. Do you have a “render”/redirect_to method being
called in your ‘create’ controller action? Where is it going?

On 29 May 2011 10:45, egervari [email protected] wrote:

I have the new template under app/views/sectors but the test says:

SectorsController POST create with invalid params re-renders the ‘new’ template
Failure/Error: response.should render_template(“new”)
expecting <“new”> but rendering with <“”>

It sounds like the test is working and that your code is at fault by
the looks of it. Do you have a “render”/redirect_to method being
called in your ‘create’ controller action? Where is it going?

I’m using inherited_resources so in my controller I don’t have any
action defined.
The controller is simply:

class SectorsController < InheritedResources::Base

def destroy
destroy!(:notice => t(‘Sector’)+" deleted.“)
rescue
flash[:error] = t(‘Sector’)+” is not deleted."
end
end

On 29 May 2011 19:35, Mauro [email protected] wrote:

I’m using inherited_resources so in my controller I don’t have any
end

If I launch the application and I try to create an invalid sector, it
renders the new template correctly
I have another application and this test:

it “re-renders the ‘new’ template” do
UnsafeBuilding.stub(:new) { mock_unsafe_building(:save => false) }
post :create, :unsafe_building => {}
response.should render_template(“new”)
end

This works and the controller uses inherited_resources too.
I don’t understand why the test in the first application doens’t work
while the one in the second application works.