2009-03-06 9 views
3

J'ai une classe définie dans un fichier lib de mon projet Rails qui va implémenter un tas de fonctions utilitaires comme méthodes de classe. Je voudrais écrire des tests sur ces méthodes en utilisant Test :: Unit et les faire fonctionner dans le cadre de la routine de test habituelle du projet.Comment tester le code qui n'est pas un modèle ou un contrôleur

J'ai essayé de coller un fichier au niveau supérieur du test dir ...

require 'test_helper' 

class UtilsTest < ActiveSupport::TestCase 
    should 'be true' do 
    assert false 
    end 
end 

... mais cela ne fonctionne pas. Le test n'a pas fonctionné.

Quelle est la manière normale de tester le code qui n'est pas l'une des parties régulières de Rails?

Répondre

4

Vous pouvez les mettre dans votre répertoire d'unités sans aucune complication.

Ma bibliothèque:

[ cpm juno ~/apps/feedback ] cat lib/my_library.rb 
class MyLib 
    def look_at_me 
    puts "I DO WEIRD STUFF" 
    end 
end 

Mon test:

[ cpm juno ~/apps/feedback ] cat test/unit/fake_test.rb 
require 'test_helper' 

class FakeTest < ActiveSupport::TestCase 
    # Replace this with your real tests. 
    def test_truth 
    require 'my_library' 

    puts "RUNNING THIS NOW" 
    MyLib.new.look_at_me 
    assert true 
    end 
end 

Et l'exécuter:

[ cpm juno ~/apps/feedback ] rake test:units 
(in /home/cpm/apps/feedback) 
/usr/bin/ruby1.8 -Ilib:test "/usr/lib/ruby/gems/1.8/gems/rake-0.8.3/lib/rake/rake_test_loader.rb" "test/unit/fake_test.rb" 
Loaded suite /usr/lib/ruby/gems/1.8/gems/rake-0.8.3/lib/rake/rake_test_loader 
Started 
RUNNING THIS NOW 
I DO WEIRD STUFF 
. 
Finished in 0.254404 seconds. 

1 tests, 1 assertions, 0 failures, 0 errors 
Loaded suite /var/lib/gems/1.8/bin/rake 
Started 

Finished in 0.00094 seconds. 

0 tests, 0 assertions, 0 failures, 0 errors 

Tant qu'il se termine par _test.rb il faut le ramasser.

7

Je les colle juste dans l'essai/unité. Je ne suis pas sûr si c'est l'approche "correcte", mais cela semble fonctionner pour moi ...

1

ceci est un exemple de test \ application_helper_test.rb fonctionnel \ qui testent la fonctionnalité d'aide

require File.dirname(__FILE__) + '/../test_helper' 

require 'application_helper' 

class HelperTest < Test::Unit::TestCase 
    include ApplicationHelper 

    def test_clear_search_string 
     assert_equal 'Park Ave', clear_search_string('street Park Ave') 
    end 
end 
Questions connexes