Должен ли я тестировать весь бизнес-поток в архитектуре MQ / Service? - PullRequest
0 голосов
/ 15 октября 2018

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

В настоящее время у меня есть интеграционные тесты, которые тестируют наши конечные точки HTTP, что-то вродеthis:

1. Create fake data in a dockerized mysql container. So that the DB is in the correct state
2. Perform testable action such as: User needs to approve a contract
3. Expect that the `contract.status` is now `approved`
4. Query a local SMTP server (Mailhog) to see if the email is there
5. Expect that email subject/body contains what I'm expecting

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

1 Ответ

0 голосов
/ 15 октября 2018

Если все решение находится под вашей ответственностью, вы обязательно должны написать интеграционные тесты для всего решения.

As Мартин Фаулер заявляет:

Интеграциятесты определяют, работают ли независимо разработанные модули программного обеспечения правильно, когда они связаны друг с другом.

Написание тестов зависит от конкретной реализации.Я думаю, вам нужно будет создать тестовые данные и выполнить действие (шаги с 1 по 3), а затем проверить результаты независимо от наличия MQ.

...