Как написать модульные тесты MassTransitStateMachine?

Наконец-то я начинаю использовать превосходные компоненты Automatonymous в MassTransit, и я бы хотел пройти через мой новый конечный автомат.

Прочитав здесь документы по MT ( http://masstransit-project.com/MassTransit/advanced/sagas/automatonymous.html) и потратив некоторое время на поиск в Google, я нашел модульные тесты прямо в репозитории MT/Automatonymous Git, который выглядел как путь:

В частности, _machine.RaiseEvent(....) Метод, казалось, был именно тем, что мне нужно, чтобы иметь возможность управлять конечным автоматом с помощью тестовых стимулов.

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

https://github.com/MassTransit/Automatonymous/blob/15e9181ed05e37ff71e85b514aafc351b1edf27f/src/Automatonymous/RaiseEventExtensions.tt

Вот где я застрял. Я не уверен, что правильно использовать эти методы расширения для тестирования? *.tt - это формат шаблона генерации текста... Установлены ли они как часть пакета nuget? Как получить доступ к расширениям? и / или в более широком смысле, каков рекомендуемый способ написания модульных тестов для конечных автоматов, наследуемых от MassTransitStateMachine<T>?

Дополнительный вопрос здесь: Как успешно управлять MassTransitStateMachine через InMemoryTestHarness?

1 ответ

Решение

Тест, на который вы ссылаетесь, не из MassTransit, а из библиотеки Automatonymous, которая не является частью MassTransit.

То, что вы ищете, можно найти здесь:

  • Конечный автомат саговых испытаний с использованием тестовых рамок. Проблема в том, что тестовая среда связана с NUnit
  • "Классическая" сага-тесты с использованием тестового жгута. Тестовый жгут не зависит от фреймворка, но нет тестов, объединяющих конечные автоматы и тестовый жгут, по крайней мере, в основном репо.
  • Конечный автомат саговых испытаний с использованием теста твердости вне основного репо. Это мой проект, и я использую xUnit, так как я использую тестовый жгут, это нормально. Тем не менее, вы можете видеть, что один тест пропущен, и я точно не помню, в чем была проблема, но там было что-то, что я не смог решить. Это может быть связано с постоянством, которое я проверяю, хотя.
Другие вопросы по тегам