在ServiceStack中,如何使用多个端点进行集成测试?

时间:2016-04-21 09:36:22

标签: servicestack integration-testing

我们将ServiceStack用于具有多个不同问题域的客户端项目,我们希望将其保持分离。我们开发了一个测试框架,用于旋转AppHostHttpListener并使用SQLite和DbUp设置内存测试数据库 - 但是,如您所知,测试会话的AppDomain can only have one AppHost at a time

另一方面,我们要部署两个不同的AppHost,我们称之为FooBarFoo接受请求并将其传递给Bar,因此Foo -> Bar和Bar是独立的。

我们希望能够编写执行FooBar实例的端到端集成测试。由于ServiceStack限制每个AppDomain一个AppHost,我们似乎有以下选择:

  1. 在测试会话中为每个AppHost 启动一个新的AppDomain,并控制它们在MarshallByRef边界内的生命周期。不知道这会如何在AppHosts之间共享“测试连接”。
  2. 模拟外部服务。这是教科书的答案,但这些系统非常重要,我们希望看到一项服务的更改何时会破坏另一项服务。
  3. 使端点可插入,以便可以将它们加载到同一个AppHost中进行测试,但是在不同的子URL下。我看到它的方式,这将要求端点共享AuthFeature,IDbConnectionFactory等,所以我们将失去这种灵活性。
  4. 我的问题是:

    1. 你会选择哪个选项?
    2. 您能否推荐另一种方法,使我们能够测试内存中多个ServiceStack端点的集成?

1 个答案:

答案 0 :(得分:1)

在内存中测试多个服务的唯一方法是将它们组合在同一个Test AppHost中,这只需要注册集成测试正在测试的依赖项。在内存中集成测试通常具有针对任务构建的Custom AppHost,AppHost不是测试的一部分。

另一种方法是使用IIS Express并在运行之前启动集成测试中使用的端点实例。