如何编写MassTransitStateMachine单元测试?

时间:2018-04-10 22:11:47

标签: c# unit-testing state masstransit automatonymous

我终于开始利用MassTransit中出色的Automatonymous组件了,我想通过我的新状态机TDD方式。

在阅读了MT文档(http://masstransit-project.com/MassTransit/advanced/sagas/automatonymous.html)并花了一些时间谷歌搜索后,我发现MT / Automatonymous Git仓库中的单元测试看起来像是要走的路:

特别是,connectionString="Data Source=localhost;Initial Catalog=MyDB;user id=myuser;password=mypass" 方法似乎正是我需要能够通过测试提供的刺激来驱动状态机。

接下来,我去寻找那个超载...原来这是一种似乎住在这里的扩展方法:

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

这就是我被困住的地方。我不确定使用这些扩展方法进行测试的正确方法是什么? * .tt是文本生成模板格式......这些是否作为nuget包的一部分安装?如何获得对扩展程序的访问权限?和/或更广泛地说,为从_machine.RaiseEvent(....)继承的状态机编写单元测试的推荐方法是什么?

此处的后续问题:How to successfully drive a MassTransitStateMachine via the InMemoryTestHarness?

1 个答案:

答案 0 :(得分:2)

您引用的测试不是来自MassTransit,而是来自Automatonymous库,它不属于MassTransit。

你在寻找的东西可以在这里找到:

  • State machine saga tests使用测试框架。问题是测试框架与NUnit
  • 耦合
  • "Classic" saga tests使用测试工具。测试工具与框架无关,但没有测试将状态机和测试工具结合起来,至少在主仓库中是这样。
  • State machine saga tests使用主要回购之外的测试硬度。这是我的项目,我使用xUnit,因为我使用的是测试工具,没关系。但是,您可以看到一个测试被跳过,我不记得究竟是什么问题,但有些东西我无法解决。这可能与我测试的持久性有关。