Как повторить тестовый пример без дубликата кода? - PullRequest
2 голосов
/ 05 марта 2010

Я использую musta с 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

1 Ответ

2 голосов
/ 05 марта 2010

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

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
...