Wie können diese zerstören-Aktion getestet werden mit RSpec?
In meiner Rails-app, wenn ein user
löschen will seinen eigenen account, wird er zunächst zur Eingabe seines Passwortes in meinem terminate
anzeigen:
<%= form_for @user, :method => :delete do |f| %>
<%= f.label :password %><br/>
<%= f.password_field :password %>
<%= f.submit %>
<% end %>
Dies ist mein UsersController
:
def terminate
@user = User.find(params[:id])
@title = "Terminate your account"
end
def destroy
if @user.authenticate(params[:user][:password])
@user.destroy
flash[:success] = "Your account was terminated."
redirect_to root_path
else
flash.now[:alert] = "Wrong password."
render :terminate
end
end
Das problem ist, dass ich kann nicht scheinen zu finden ein Weg, um dies zu testen mit RSpec.
Was ich habe ist dieses:
describe 'DELETE #destroy' do
before :each do
@user = FactoryGirl.create(:user)
end
context "success" do
it "deletes the user" do
expect{
delete :destroy, :id => @user, :password => "password"
}.to change(User, :count).by(-1)
end
end
end
Jedoch das gibt mir eine Fehlermeldung:
ActionView::MissingTemplate:
Missing template users/destroy, application/destroy with {:locale=>[:en], :formats=>[:html], :handlers=>[:erb, :builder]}. Searched in:
* "#<RSpec::Rails::ViewRendering::EmptyTemplatePathSetDecorator:0x007fa7f51310d8>"
Kann mir jemand sagen, was ich hier noch fehlt oder schlagen Sie einen besseren Weg, um dies zu testen Aktion?
Vielen Dank für jede Hilfe.
die Fehlermeldung, die Sie bekommen, ist sehr seltsam. BTW, Sie nicht senden Sie die richtigen params
Haben Sie den jeweiligen view-templates?
mit dieser Implementierung, OP muss nicht
Wirkt sich eine änderung an der request-line tests, um diese zu löschen :vernichten, :id => @Benutzer.id :Kennwort => "Passwort" einen Unterschied macht?
Sie sind wahrscheinlich Recht. Ich bin immer versucht, um meine Fragen so kurz wie möglich und manchmal bekomme ich die Weg durchgeführt. Tut mir Leid, dass.
Haben Sie den jeweiligen view-templates?
mit dieser Implementierung, OP muss nicht
destroy
Vorlage, aber das fehlen dieser Vorlage ist es, was RSpec beschwert.Wirkt sich eine änderung an der request-line tests, um diese zu löschen :vernichten, :id => @Benutzer.id :Kennwort => "Passwort" einen Unterschied macht?
Sie sind wahrscheinlich Recht. Ich bin immer versucht, um meine Fragen so kurz wie möglich und manchmal bekomme ich die Weg durchgeführt. Tut mir Leid, dass.
InformationsquelleAutor Tintin81 | 2013-11-06
Du musst angemeldet sein, um einen Kommentar abzugeben.
OK, dies ist meine Lösung:
Den
before :each
Anruf, den ich vorher hatte, war nutzlos (das ist nicht ein integration-test). Das Kennwort übergeben werden, wie dieser::user => {:password => @user.password}
was ich nicht wusste bis zum Lesen dieser thread.InformationsquelleAutor Tintin81