c# - 如何编写 MassTransitStateMachine 单元测试?

标签 c# unit-testing state masstransit automatonymous

我终于开始在 MassTransit 中利用出色的自动命名组件,并且我想通过我的新状态机进行 TDD。

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

特别是 _machine.RaiseEvent(....)方法似乎正是我能够使用测试提供的刺激来驱动状态机所需要的。

接下来,我去寻找那个重载...原来它是一个似乎存在于此处的扩展方法:

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

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

后续问题在这里:How to successfully drive a MassTransitStateMachine via the InMemoryTestHarness?

最佳答案

您引用的测试不是来自 MassTransit,而是来自 Automatonymous 库,它不是 MassTransit 的一部分。

你要找的东西大概可以在这里找到:

  • State machine saga tests使用测试框架。问题是测试框架与 NUnit 耦合
  • "Classic" saga tests使用测试线束。测试工具与框架无关,但没有结合状态机和测试工具的测试,至少在主代码库中是这样。
  • State machine saga tests在主要 repo 之外使用测试硬度。这是我的项目,我使用 xUnit,因为我使用的是测试工具,所以没问题。但是,您可以看到跳过了一个测试,我不记得到底是什么问题,但有些事情我无法解决。这可能与我测试的持久性有关。

关于c# - 如何编写 MassTransitStateMachine 单元测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49763600/

相关文章:

c# - 如何在 C# 中设置值 float?

c# - Dictionary.Last() 的返回值是否未定义?

flutter - 打开页面时如何始终设置状态?

c# - ASP.NET CORE 1.0,DNX 包文件夹

c# - MVC4 部分绑定(bind)模型到 ICollection 或 List

c# - 使用 InternalsVisibleToAttribute 的单元测试需要使用/不使用 :filename. ext 进行编译?

c# - Entity Framework : Mocking with JustMock

c# - 如何使用 BouncyCaSTLe X509V3CertificateGenerator 设置 upnName(用户主体名称)

reactjs - 当没有类或构造函数时,如何在 React 中设置状态?

javascript - React Material UI 复选框 : How to check/uncheck other boxes in group by checking a different box?