2010-07-24 6 views
0

Je veux tester une aide où j'utilise une variable d'instance à l'intérieur. J'utilise les rails 2.3 avec le framework de test par défaut. Pouvez-vous s'il vous plaît quelqu'un d'écrire mon test simple (je suppose un test d'unité) pour cela? mercirails test helpers avec variable d'instance?

Une version plus simple de mon code comme exemple.

# controller 
@bla = "some value" 

# view 
<%= foo %> 

# helper 

def foo 
    @bla.reverse 
end 

ou est-ce une meilleure pratique d'écrire cette aide avec un appel de paramètre?

def foo(s) 
    s.reverse 
end 

Répondre

0

Peut-être que je manque quelque chose, mais dans l'exemple que vous avez donné, vous à peu près juste écrit un one-to-one wrapper autour de la fonction inverse? Qu'essayez-vous de faire? En ce qui concerne les tests, il n'existe pas de méthode directe pour tester les aides dans la suite de tests fournie avec les rails, mais un plugin ajoute cette fonctionnalité: http://nubyonrails.com/articles/test-your-helpers. Je ne l'ai pas utilisé depuis un moment, mais je pense que ça marche toujours.

+0

Ok, merci pour votre réponse. L'aide est seulement un exemple pas "code du monde réel" :) – startkinder

+0

Aucun prob, comprendre: D. Mais oui, une réponse courte - tester les assistants à travers les contrôleurs, ou il n'y a pas de cadre de test d'aide intégré :). – jasonpgignac

1

Vous pouvez tester les helpers assez facilement et il est intégré au framework de test, donc je ne suis pas sûr de ce que dit jasonpgignac. Sous test/unité/helpers, vous verrez tous vos helpers générés par votre script/générer un échafaudage ou un contrôleur ... mais vous les générez.

A l'intérieur de ce fichier, vous pouvez simplement affirmer qu'une valeur est égale, parce que vous êtes juste en train de tester pour vous assurer que le résultat arrive comme prévu. Voilà un i tiré de mon code:

require 'test_helper' 

class PaymentsHelperTest < ActionView::TestCase 
    test "displays Month names" do 
    assert_equal "April 2010", month_and_year_name(payment_transactions(:one)) 
    end 
end 

Il faisait longtemps que je l'ai écrit, mais vous appelez l'aide réelle dans votre affirmation. Dans ce cas mon assistant s'appelait month_and_year_name et je lui ai passé un appareil.

Matériel facile, qui vient avec le plus grand cadre d'essai connu à l'homme, essai :: unité et montages ... comme Dieu prévu.