1

Моя команда разрабатывает приложение Web API 2 с использованием платформы Entity framework 6 ORM.Как написать интеграционные тесты?

Наша заявка действует как электронная почта, и основная цель и действие - отправить письмо от одного клиента другому.

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

При отправке письма основные действия, которые происходят, и что мы хотели бы, чтобы проверить являются-

  • письмо получено через HTTP Post метод и проверяется на сервере
  • Письмо сохранен в базе данных .
  • Буква сериализована.
  • Сериализованная буква отправляется в указанные пункты назначения через внешний модуль.
  • Письмо десериализуется на стороне приемника.
  • Письмо добавляется в базу данных получателя.

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

Каким должен быть тест для этого? С чего начать? Как достичь фактической отправки письма через тест и убедиться, что он работает?

Это не обязательный тест.

Благодаря

Edit:

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

ответ

1

Я бы установить несколько, без фактического кода тестов, чтобы проверить свою логику:

  1. Прием письма, и это логика
  2. Убедитесь, что метод сохранения в базе данных вызывается только тогда, когда его следует
  3. Проверьте биты сериализации/десериализации кода
  4. Убедитесь, что модуль выбора места назначения работает правильно.

Как только у вас есть эти «не вызывающие» тесты, вы знаете, что все биты вашей системы работают правильно индивидуально. Затем вы можете настроить единичный тест с какой-либо маркировкой (т. Е. TestCategory («SUPERSLOW»)), а затем запустить этот запуск вручную для издевающегося набора получателей для проверки во время тестовых прогонов интеграции, а не как часть вашего CI.

Ключевые слова здесь:

  • SOLID принципы
  • Разделение концернах
  • оскорбляющих
  • непрерывной интеграции
  • инверсия управления
+0

Мы имеем модульные тесты для всех частей приложения, мы хотели несколько тестов, чтобы покрыть все это r и убедитесь, что мы не разрушаем отправку –

+0

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

+0

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

Смежные вопросы