#ruby #testing #rspec
#ruby #тестирование #rspec
Вопрос:
Я тестирую метод статического класса, передавая в него множество различных входных данных. Поскольку каждый входной сигнал довольно большой, я где-то сохранил список и передаю каждый методу в цикле.
Однако я понимаю, что ошибки не отображают входные данные для этих методов, что затрудняет отладку. Есть ли способ отобразить это вместо этого?
Ответ №1:
Возможно, вы могли бы пометить входные данные (например, хэшем) и использовать метки для создания заголовков примеров, чтобы вы знали, какой ввод привел к неожиданным результатам?
Например.
INPUTS = {
"returns an error when input is too big" => { :input => ..., :output => ... },
"returns an error when input too small" => { :input => ..., :output => ... },
"returns a pony when input is just right" => { :input => ..., :output => ... },
}
INPUTS.each do |title, bundle|
it title do
StaticClass.method(bundle[:input]).should == bundle[:output]
end
end
Этот пример глупый; очевидно, вы хотели бы загрузить свои данные из файлов yaml или чего-то еще, но мне было слишком лениво загружать демонстрационный код для этого. Dir.glob.somethingorother. 🙂
Также обратите внимание, что проблема, которую вы пытаетесь решить, является неотъемлемой проблемой тестов, управляемых приборами; вам нужно посмотреть куда-нибудь за пределы примера кода, чтобы увидеть, что делал пример кода. Если вы можете избежать тестов, управляемых приборами, я рекомендую вам сделать это.