2008-10-13 7 views
2

Dans mon point de vue j'utiliser une aide qui prend du code HTML arbitraire comme un bloc:Comment puis-je tester les aides de bloc Rails avec Rspec

<% some_block_helper do %> 
    Some arbitrary HTML and ERB variables here. 
    More HTML here. 
<% end %> 

Mon aide fait un tas de choses au bloc passé de HTML avant de le restituer retour à la vue (Markdown et autre formatage). Je voudrais savoir quelles sont les façons les plus propres de tester le résultat de l'appel d'assistance dans rSpec, le cas échéant. J'ai trouvé quelques exemples qui marmonnent avec des méthodes privées d'ERB mais cela semble un peu cassant et difficile à lire.

Répondre

1
  1. Pour un test fonctionnel, écrivez un view spec normal et testez le résultat.
  2. Pour tester votre unité helper, transmettez-lui directement une chaîne d'entrée html arbitraire.

S'il y a une autre difficulté qui me manque, veuillez commenter?

+0

Cameron Depuis le test est en Ruby et pas dans un modèle, il n'est pas clair comment reproduire le comportement de mettre du HTML en dehors des balises ERB entre 'do' et' end'. – Peeja

7

Pour ajouter un peu plus à ce que James a dit, je pense que quelque chose comme ça devrait fonctionner parfaitement:

describe SomeHelper do 
    it 'should do something' do 
    helper.some_block_helper { the_block_code }.should XXXX 
    end 
end 
1

Voici un autre exemple qui se développe sur la réponse

describe SomeHelper do 
    it 'should do something' do 
    content = lambda { "blah" }         
    result = helper.some_block_helper(&content) 

    result.should include("blah") 
    result.should XXX 
    end 
end 
Questions connexes