我们通过在 Unity 中基于 Per-Web-Request 拥有相同的实例来处理 EF 上下文问题。
这很完美,但我们现在引入了 SpecFlow 来编写 BDD 规范。
我们的大部分 SpecFlow 步骤直接进入控制器,因此我们希望模拟控制器在 IIS 世界上运行时会发现的相同环境。
如何才能做到这一点?
我们得到的最接近的方法是在 SpecFlow 的 BeforeStep 上创建一个子 Unity 容器,但这并不一定意味着每个控制器调用都会有不同的上下文实例(例如当您实际通过 IIS 发出 HTTP 请求时)。我们确实需要在控制器上模拟 HTTP 调用环境,否则规范可能无法捕捉到生产代码中的问题。
谢谢。