тестирование контроллера - это функциональное тестирование? - PullRequest
0 голосов
/ 16 апреля 2019

Я действительно заинтересован в различных аспектах тестирования. Я надеюсь, что вы действительно можете прочитать это и просто дать мне свои идеи, если у вас есть опыт с этим Давайте сломаться.

Факт 1: Говорят, что когда мы пишем тест с точки зрения пользователя (переход к uri и получение результатов, и если пользователь видит правильный результат, тогда тест является правильным). Говорят, это называется функциональным тестированием.

Подводя итог 1: Так получается, когда мы пишем тесты для контроллера, он всегда функционален, так как мы должны сделать запрос к конечной точке и наблюдать результат. Написание тестов для контроллеров всегда является функциональным тестом. Это верно?

=============================================== ===========================

Факт 2: Итак, интеграционное тестирование не является тестированием контроллера. Давайте представим, что у нас есть некоторые функции (не функции контроллера) в нашем приложении. Например, в наших вспомогательных классах или моделях. и мы хотим протестировать такие функции, как интеграционное тестирование. Так что мы ничего не будем издеваться, а просто протестируем.

Подводя итог 2. Таким образом, интеграционное тестирование может быть выполнено для функций, которые не являются функциями контроллера, написаны в других местах (где запрос не требуется) и должны использовать внешние зависимости. Под внешними зависимостями можно думать что угодно (например, файл, база данных или другой класс). Это правильно?

=============================================== ===========================

Подводя итоги 3: что если у меня только API и вместо того, чтобы возвращать представления, я возвращаю json и коды состояния с контроллеров. Если я напишу тест для контроллеров, он все равно будет называться функциональными тестами. право

1 Ответ

0 голосов
/ 25 апреля 2019

Интересный вопрос. Я считаю, что это зависит от того, как вы тестируете контроллер. Давайте начнем с пары определений различных типов тестирования . Эти определения широко соответствуют вашим двум фактам.

Давайте рассмотрим пример платформы электронной коммерции и контроллера для оформления заказа.

Контроллер - модульное тестирование

Здесь мы должны рассматривать контроллер изолированно. Поэтому мы хотим издеваться над запросом пользователя. Например, если вы используете Spring Framework, вы можете использовать библиотеку для макетирования http запросов .

Контроллер - интеграционное тестирование

Чтобы быть интеграционным тестом, мы должны рассмотреть взаимодействие двух частей системы. В нашем примере корзины покупок мы могли бы смоделировать запрос http, как указано выше, но протестировать взаимодействие между корзиной покупок и кодом проверки.

Контроллер - функциональное тестирование

Для функционального тестирования нам необходимо рассмотреть сквозной сценарий, когда пользователь нажимает на пользовательский интерфейс и использует корзину для покупок.

Таким образом, если вы тестируете свой контроллер с использованием чего-то, что создает ложный HTTP-запрос, то это, скорее всего, модульное или интеграционное тестирование. Если вы тестируете контроллер с помощью selenium или пользователь нажимает на пользовательский интерфейс, то это, скорее всего, функциональное тестирование.

...