Comment cela peut-il détruire l'action testé avec RSpec?

Dans mon application Rails, si un user veut supprimer son propre compte, il doit d'abord avoir à entrer son mot de passe dans mon terminate vue:

<%= form_for @user, :method => :delete do |f| %>

  <%= f.label :password %><br/>
  <%= f.password_field :password %>

  <%= f.submit %>

<% end %>

C'est mon 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

Le problème est que je n'arrive pas à trouver un moyen de tester cela avec RSpec.

Ce que j'ai est: est-ce

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

Cependant, cela me donne une erreur:

ActionView::MissingTemplate:
Missing template users/destroy, application/destroy with {:locale=>[:en], :formats=>[:html], :handlers=>[:erb, :builder]}. Searched in:
* "#<RSpec::Rails::ViewRendering::EmptyTemplatePathSetDecorator:0x007fa7f51310d8>"

Quelqu'un peut-il me dire ce que je suis absent ici ou suggérer une meilleure façon de tester cette action?

Merci pour toute aide.

  • l'erreur que vous obtenez est très bizarre. BTW, vous n'avez pas d'envoyer les bons paramètres
  • Avez-vous eu la vision pertinente des modèles en place?
  • avec cette mise en œuvre, l'OP n'a pas besoin de destroy modèle, mais le manque de ce modèle est que RSpec se plaint pour.
  • Modification de la ligne de demande dans les tests de cette suppression :détruire, :id => @user.id :mot de passe => "mot de passe" permet de faire une différence?
  • Vous avez probablement raison. Je suis toujours en essayant de garder mes questions aussi court que possible et parfois je m'emporte. Désolé à ce sujet.
  • Oui, je les ai tous.
  • Vous êtes de droite. J'ai créé un fichier vide destroy.html.erb et qui a éliminé l'erreur. Même après la suppression de ce fichier là encore, l'erreur est encore disparu.
  • Nope, ça n'a pas changer quoi que ce soit.

InformationsquelleAutor Tintin81 | 2013-11-06