2010-03-04 5 views
2

Я использую Shoulda с Ruby On Rails, и у меня есть следующие тестовые случаи:Как повторить тестовый пример без дубликата кода?

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 

Он работает хорошо, но я ненавижу повторяющийся код я написал здесь. Поэтому я надеюсь написать тестовый пример, как показано ниже. Этот тестовый пример следует запускать несколько раз, и каждый раз значение some_bird устанавливается на другое. Это выполнимо?

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 

Спасибо,

Bryan

ответ

2

Вы могли бы попробовать что-то подобное для текущего примера

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

Fantastic! Это именно то, чего я хочу. Спасибо! – Shuo

Смежные вопросы