2010-03-04 4 views
2

J'utilise Shoulda avec Ruby on Rails, et j'ai les cas de tests suivants:Comment répéter un cas de test sans code en double?

class BirdTest < Test::Unit::TestCase 

    context "An eagle" do 
     setup do 
     @eagle = Eagle.new 
     end 
     should "be able to fly" do 
     assert_true @eagle.can_fly? 
     end 
    end 

    context "A Crane" do 
     setup do 
     @crane = Crane.new 
     end 
     should "be able to fly" do 
     assert_true @crane.can_fly? 
     end 
    end 

    context "A Sparrow" do 
     setup do 
     @sparrow = Sparrow.new 
     end 
     should "be able to fly" do 
     assert_true @sparrow.can_fly? 
     end 
    end 

end 

Il fonctionne bien mais je déteste le code en double j'ai écrit ici. J'espère donc écrire un cas de test comme celui-ci. Ce scénario de test doit être exécuté plusieurs fois et chaque fois que la valeur de some_bird est définie sur un autre. Est-ce faisable?

class BirdTest < Test::Unit::TestCase 

    context "Birds" do 
     setup do 
     @flying_bird = some_bird 
     end 
     should "be able to fly" do 
     assert_true @flying_bird.can_fly? 
     end 
    end 

end 

Merci,

Bryan

Répondre

2

Vous pouvez essayer quelque chose comme ça pour votre exemple actuel

class BirdTest < Test::Unit::TestCase 
    context "Birds" do 
    [Crane, Sparrow, Eagle].each do |bird| 
     context "A #{bird.name}" do 
     should "be able to fly" do 
      this_bird = bird.new 
      assert this_bird.can_fly? 
     end 
     end 
    end 
    end 
end 
+0

Fantastique! C'est exactement ce que je veux. Je vous remercie! – Shuo

Questions connexes