У меня есть несколько рубиновых файлов (, b.rb
, c.rb
), которые определяют очень похожие классы. (Они должны проверить то же самое)Создание почти идентичных тестов рубинового кода
Я написал единичный тест для тестирования этих подклассов, и я сгенерировал контексты для каждого из классов программно (см. Ниже) - вместо этого я вместо этого программно создаю целые классы тестов? Если да, то почему и как?
Я использую расширения тестовых shoulda
единицы, так что мои файлы выглядеть примерно так:
a.rb
class ItsA
def number
1123
end
end
b.rb
class ItsB
def number
6784
end
end
test_letters.rb
require 'rubygems'
require 'test/unit'
require 'shoulda'
class LettersTest < Test::Unit::TestCase
Dir.glob('letters/*.rb') do |letter|
context "The #{letter} letter file"
setup do
# Here I require the ruby file and allocate
# @theclass to be an instance of the class in the file.
# I'm actually testing JavaScript using Harmony, but
# putting those details in might complicate my question.
end
should "return a number" do
assert @theclass.number.is_a? Number
end
end
end
Это делает работу достаточно хорошо, но я должен сделать некоторые другие jiggerypokery и создать LetterATest
, LetterBTest
и т.д. автоматически вместо этого? Если да, как бы вы это сделали и почему?
вы можете абстрагировать метод в модуль, протестировать один раз и включить в классы. –