По определению CQRS команда может / должна быть проверена и в конце даже отклонена (если проверка не прошла). В рамках проверки моей команды я проверяю, действительно ли необходим переход состояния. Итак, давайте рассмотрим простой фиктивный пример: субъект находится в состоянии A. Команда отправляется субъекту для перехода в состояние B. Команда проверяется, и в конце генерируется событие StateBUpdated
. Затем та же самая команда отправляется для перехода в состояние B. Снова команда проверяется, и во время проверки решается, что никакое событие не будет сгенерировано (поскольку мы уже находимся в состоянии B), и просто ответим, что команда была обработана, и все Ok. Это что-то вроде идемпотентности.
Тем не менее, мне сложно (модульно) это протестировать. Обычный модульный тест для постоянного актора выглядит как отправка команды актеру, а затем перезапуск актора и проверка того, что состояние сохраняется. Я хочу проверить, отправляю ли я команду актеру, чтобы проверить, сколько событий было сгенерировано. Как это сделать?
Спасибо