Starten Sie einfach mit RSpec. Alles läuft reibungslos, außer einer Spezifikation mit verschachtelten Controllern.RSpec Neuling: "Update-Attribute => False" wird nicht erkannt
Ich versuche sicherzustellen, dass, wenn eine 'Kommentar' Ressource (verschachtelt unter 'Post') mit ungültigen Parametern aktualisiert wird, es die Vorlage 'Bearbeiten' rendert. Ich bemühe mich, rspec zu bekommen, um den: update_attributes => false trigger zu erkennen. Wenn jemand irgendwelche Vorschläge hat, würden sie sehr geschätzt werden. Versuchte Code unten:
def mock_comment(stubs={})
stubs[:post] = return_post
stubs[:user] = return_user
@mock_comment ||= mock_model(Comment, stubs).as_null_object
end
describe "with invalid paramters" dog
it "re-renders the 'edit' template" do
Comment.stub(:find).with("12") { mock_comment(:update_attributes => false) }
put :update, :post_id => mock_comment.post.id, :id => "12"
response.should render_template("edit")
end
end
Und der Controller:
def update
@comment = Comment.find(params[:id])
respond_to do |format|
if @comment.update_attributes(params[:comment])
flash[:notice] = 'Post successfully updated'
format.html { redirect_to(@comment.post) }
format.xml { head :ok }
else
format.html { render :action => "edit" }
format.xml { render :xml => @comment.errors, :status => :unprocessable_entity }
end
end
end
Und schließlich der Fehler:
Failure/Error: response.should render_template("edit")
expecting <"edit"> but rendering with <"">.
Expected block to return true value.
Hervorragende, gründliche, klare Antwort. Danke vielmals. :-) – PlankTon