2016-02-19 2 views
0

Предположим, вы создаете API в Rails. Достаточно ли этого, если мы будем писать спецификации запросов самостоятельно без спецификации модели, спецификаций контроллера и спецификаций вида? Зачем нам нужно модульное тестирование, если мы проводим приемку и функциональное тестирование или тестирование функций для веб-проектов с интерфейсом. Я настаивал на проведении модульного тестирования, поскольку он позволяет писать развязанный код, но мой коллега против этого. Каковы наилучшие практики в этом рубине в сообществе рельсов?Есть ли какое-либо преимущество при проведении модульных испытаний и приемочных испытаний?

ответ

1

Если у вас есть только время для проведения одного типа тестирования, и вы пишете API, тогда может быть разумным только выполнять тестирование функций, просто называя конечные точки API. В конце концов, очень важно, чтобы эти конечные точки возвращали ожидаемые результаты.

Однако, когда ваши функциональные тесты начнут ломаться, вы, вероятно, столкнетесь с ужасным временем, выяснив источник проблем без модульных тестов. Есть ли основная часть вашего программного обеспечения, которое использует большинство ваших конечных точек? Удачный рефакторинг, который без надежного набора модульных тестов.

Но это действительно говорит о том, что вам нужно выяснить - ваш основной набор довольно стабилен? Вы действительно просто добавляете функции или новые конечные точки? Если это так, вы, вероятно, можете уйти с серьезным методом тестирования характеристик.

0

Рельсы и испытания идут вместе, как горох и морковь. Here is a great ресурс, который выделяет (лучше, чем когда-либо) важность использования тестов (всех степеней) в ваших проектах Rails. Надеюсь это поможет!

0

Не уверен в «сообществе», но, на мой взгляд, это зависит от сложности проекта. Если это очень простой проект API, выполнение тестов может быть прекрасным.

Но если проект становится больше, модульные тесты позволяют лучше выявлять ошибки в случае, если что-либо сломается. То есть вы не видите «есть ошибка где-то в функции X», но «тот или иной класс не работает при вызове конкретного метода с конкретными аргументами».