我们有一个现有的ASP.NET Web Api 2应用程序,正在迁移到ASP.NET核心MVC。至此,该应用程序已正常运行,但我们尚未迁移所有测试。我们当前的测试以以下方式工作,所有这些步骤都针对每个测试执行:
设置(在所有测试中都很常见)
测试
HttpResponseMessage
的状态(状态代码...)和返回的对象(使用自定义帮助程序反序列化),检查模拟/间谍期望值和/或本地数据库状态。拆卸(在所有测试中都很常见)
如您所见,我们的测试比integration tests更接近unit tests,因为我们始终使用接近完整的依赖图。但是我们不需要使用测试服务器,并且可以在执行之前直接对控制器的状态进行操作(设置当前用户等)。
与集成测试(在不到一分钟的时间内执行数百个测试)相比,这将导致执行时间非常快,并且对子层重构具有极大的弹性(当服务提供服务时,我们不需要重写数十个测试)接受新的依存关系,或分为两个部分)。唯一的缺点是过滤器和中间件的短路,我们必须单独测试。
ASP.NET Core MVC似乎无法使这种方法成为可能或变得简单(甚至不建议使用)。