Как отобразить входные данные тех ожиданий, которые были неверными?

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

Также обратите внимание, что проблема, которую вы пытаетесь решить, является неотъемлемой проблемой тестов, управляемых приборами; вам нужно посмотреть куда-нибудь за пределы примера кода, чтобы увидеть, что делал пример кода. Если вы можете избежать тестов, управляемых приборами, я рекомендую вам сделать это.