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

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

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

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

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

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

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

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


person Tyler Austen    schedule 10.04.2018    source источник


Ответы (1)


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

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

  • тесты саги состояний конечного автомата с использованием среды тестирования. Проблема в том, что тестовая среда связана с NUnit.
  • "Классические" тесты саги с использованием тестовая обвязка. Набор тестов не зависит от фреймворка, но нет тестов, сочетающих конечные автоматы и наборы тестов, по крайней мере, в основном репо.
  • тесты саги о машинах состояний используя тестовую твердость, за пределами основного репо. Это мой проект, и я использую xUnit, так как я использую тестовую обвязку, все в порядке. Однако вы можете видеть, что один тест пропущен, и я точно не помню, в чем была проблема, но там было что-то, что я не мог решить. Это может быть связано с настойчивостью, которую я тестирую.
person Alexey Zimarev    schedule 10.04.2018
comment
Спасибо Алексей! Я попробую это и посмотрю, как далеко я продвинусь. - person Tyler Austen; 11.04.2018
comment
Готово. Новый вопрос здесь: stackoverflow.com/questions/49765081/ - person Tyler Austen; 11.04.2018
comment
Обратите внимание, что ссылка на тесты саги о состоянии машины в ответе ведет только к about:blank.. - person Tyler Austen; 11.04.2018
comment
Спасибо @TylerAusten, я исправил ссылку - person Alexey Zimarev; 11.04.2018