Попытка попасть в юнит-тестирование. Поскольку я также внедряю CQRS, мне было интересно, как бы я протестировал что-то вроде этого
Две презентации, которые вы хотите посмотреть:
TL; DR обоих переговоров: .
Сообщения запросов и командные сообщения, отправленные на субъекту теста, устанавливаются путем запроса состояния субъекта теста. Командные сообщения отправлено на испытуемый проверен ожидаемым образом - вы подтверждаете, что правильное сообщение было отправлено, не беспокоясь о последствиях этого сообщения.
Таким образом, ответ на ваш вопрос частично зависит от того, является ли репозиторий для этого теста частью тестируемой системы или частью границы . Если хранилище является частью тестируемой системы, тогда вы можете рассматривать весь тест как проверку входящего сообщения и запрашивать состояние хранилища. Если хранилище является частью границы (если это предусмотрено тестом), то вы проверяете ожидание - правильно ли был вызван метод в хранилище?
В последнем случае возникает еще один интересный вопрос: нужно ли проверять ожидание запаха кода? Может случиться так, что проверка - путем проверки соответствия ожиданиям - фактически выявляет проблему в дизайне; возможно, в самом обработчике команды должно быть больше инструментария , чтобы тест мог запрашивать сам обработчик команд, чтобы выяснить, какие сообщения были отправлены. Скотт Беллвэр "Доктрина полезных объектов" исследует эту идею.