2009-02-09 1 views
0

Je reçois un test d'échec ici que j'ai de la difficulté à comprendre. J'utilise Test :: Unit avec l'amélioration de Shoulda. Action users_controller.rb J'essaie de tester ...Pourquoi le test du contrôleur sur une action de création échoue-t-il?

def create 
    unless params[:user][:email] =~/specific regex needed for this app /i 

    # ... 

    render :template => 'sessions/new' 
    end 
end 
test

...

context 'on CREATE to :user' do 
    context 'with invalid email' do 
    setup { post :create, { 'user[email]' => '[email protected]' } } 
    should_respond_with :success 
    end 
    # ... 
end 

ne réussit pas parce que "réponse à être un <: succès>, mais était < 302>". Comment est-ce 302?

action pour le changement ...

def create 
    render :template => 'sessions/new' 
end 

test échoue encore.

Répondre

1

@Ola: Vous avez tort: ​​le POST est connecté pour créer. PUT est normalement connecté pour mettre à jour.

A: interdit est calme étrange cependant. Voici quelques suggestions pour trouver le problème (je ne l'ai jamais utilisé Shoulda, mais je ne pense pas que ce soit un problème avec Shoulda.

  1. Assurez-vous que l'itinéraire est défini dans config/routes.rb et vérifier avec routes râteau
  2. avez-vous des before_filters qui pourraient être responsables de ce comportement (filtre de connexion, acts_as_authenticated etc ..)? log Commander/test.log. Un arrêt de la chaîne de filtre apparaît là.
  3. Imprimez le corps de la réponse met réponse.body pour voir ce que vous obtenez retourné

Espérons que cela aide.

-1

Si vous utilisez des URL REST-ful par défaut, vous devriez probablement utiliser PUT, pas POST ... Puisque PUT est connecté pour créer, POST à ​​cette URL vous donnera une redirection non autorisée.

+0

Etes-vous sûr? Dans les routes, Rails a généré "POST/users {: controller =>" users ",: action =>" créer "}" Je pensais que put était pour la mise à jour. Essayé après si. Même échec de test. – Ethan

+0

PUT est définitivement pour la mise à jour et POST est définitivement pour créer – brad