Должны ли вы тестировать драгоценные камни, которые использует ваше приложение Rails? Если да, то как вы это делаете?

#ruby-on-rails #testing #rubygems

#ruby-on-rails #тестирование #rubygems

Вопрос:

Я планирую использовать gem Sanitize в проекте Rails как способ очистки отправленных пользователем фрагментов HTML. Исходный код gem на Github включает в себя надежный набор тестов, хотя они и не включены в окончательный gem. В моих модельных тестах я хочу еще раз убедиться, что gem выполняет то, что он должен делать, и что моя модель хранит только чистый HTML. Кажется излишним воссоздавать все тесты gem в моем тестировании модели, и я бы предпочел, чтобы мой тест просто убедился, что фильтр модели before_save (который вызывает Sanitize gem) работает. Каков наилучший способ справиться с этим?

Кстати, изучая это, я наткнулся на область RubyGems, посвященную GemTester, которая выглядит действительно многообещающе, но требует, чтобы авторы драгоценных камней выбирали каждый драгоценный камень.

Ответ №1:

Я не знаю, будет ли это тем ответом, который вы ищете, но мой общий принцип заключается в том, чтобы не писать тесты для сторонних библиотек. Скорее, напишите тесты для ваших точек интеграции с этими библиотеками или код, который вы пишете поверх этих библиотек. Я бы включил тест, чтобы, возможно, убедиться, что фильтр before_save вызывается правильно, и оставить все как есть.

Комментарии:

1. Я думаю, что этот ответ заслуживает внимания и должен быть эмпирическим правилом. Очевидно, что кажется глупым тестировать КАЖДЫЙ камень, который использует ваше приложение. Я спрашивал об этом драгоценном камне, в частности, потому, что, если его тесты внезапно окажутся недействительными (возможно, незначительное обновление что-то сломало, но недостаточно, чтобы вызвать ошибку), тогда мое приложение внезапно станет уязвимым.