我想使用www.eventstore.org编写一些集成测试来测试我能够序列化一些域事件并将它们附加到流中,并检索它们并反序列化它们等 .

我一直试图找到人们通常如何做到这一点,我读了一些关于不同方法的Greg Young的答案(有点过时):

  • 每次执行集成测试时我都可以生成不同的流,但我不想这样做,也不会污染带有测试数据的事件存储

  • 我可以使用in-memor事件存储 .

第二个选项看起来很理想,因为我可以简单地运行一个干净的事件存储,运行我的测试并在最后停止服务器,以便所有数据都消失 .

我可以使用参数 --mem-db 来运行事件存储服务器,而不是在磁盘中保留任何内容 .

问题是:如果运行测试的操作系统很可能没有安装事件存储二进制文件,那么如何在运行集成测试时使用内存事件存储,因此没有真正的事件存储服务器在内存中运行?我不希望我的测试失败只是因为在执行测试的机器上没有安装事件存储并启动并运行 .

我知道市场上的一些数据库有一些nuGet包,它包含 生产环境 中使用的相同数据库引擎,但作为内存数据库,因此机器上不需要“真正的”服务器来运行测试 . 所有二进制文件都可用于项目的dll .

我试图找到一些关于这样的东西是否可用于事件存储的答案 . 我读了一些人们谈论一些嵌入式客户端API的评论,但我发现的文档不是很清楚 . 其他评论提到了一个名为MiniNode的东西,但是,线程也是假设太多,并且还没有找到关于它的内容的明确描述或者如何用于我的测试 .

总之,任何人都可以提供集成测试的示例(如果可能的话,xUnit) IEventStoreConnection 正在使用内存事件存储,其中根本没有安装事件存储?

UPDATE 1 :我尝试添加nuGet依赖项https://www.nuget.org/packages/EventStore.Client.Embedded来玩它以防万一它是我需要的 . 但它不支持DotNetCore(标准2.0),所以我不知道 . 然后我读到了这个:https://github.com/EventStore/ClientAPI.NetCore/issues/18有人建议采用不同的方法进行测试,这是使用Chocolatey来获取事件存储,然后从代码执行EventStore.ClusterNode(我会用 --mem-db 标志执行) . 我是另一种选择吗?