【发布时间】:2016-04-21 09:36:22
【问题描述】:
我们将 ServiceStack 用于具有多个不同问题域的客户项目,我们希望将它们分开。我们开发了一个测试框架,它启动了一个 AppHostHttpListener 并使用 SQLite 和 DbUp 建立了一个内存中的测试数据库 - 但是,如您所知,测试会话的 AppDomain can only have one AppHost at a time。
另一方面,我们要部署两个不同的 AppHost,我们称它们为 Foo 和 Bar。 Foo 接受请求并将它们传递给Bar,因此Foo -> Bar,Bar 是独立的。
我们希望能够编写运行Foo 和Bar 实例的端到端集成测试。由于 ServiceStack 对每个 AppDomain 一个 AppHost 的限制,我们似乎有以下选择:
- 在测试会话中为每个 AppHost 启动一个新的 AppDomain,并跨 MarshallByRef 边界控制它们的生命周期。不过,不确定这将如何在 AppHosts 之间执行共享“测试连接”。
- 模拟外部服务。这是教科书式的答案,但这些系统非常关键,我们希望看到对一项服务的更改何时会破坏另一项服务。
- 使端点可插入,以便它们可以加载到同一个 AppHost 中进行测试,但在不同的子 URL 下。在我看来,这需要端点共享 AuthFeature、IDbConnectionFactory 等,因此我们将失去这种灵活性。
我的问题是:
- 您会选择哪个选项?
- 您能否推荐另一种方法,使我们能够测试内存中多个 ServiceStack 端点的集成?
【问题讨论】:
标签: servicestack integration-testing