【发布时间】:2014-06-23 10:00:46
【问题描述】:
所以我正在使用 autofac 在 ASP.NET MVC 4 中编写高级单元测试。
所以我有一个示例控制器:
public class SomeController
{
[SomeFilter]
public ActionResult SomeAction()
{
SomeCode();
}
}
我可以编写一个示例测试:
[Test]
public void Test()
{
var controller = new SomeController();
var result = controller.SomeAction();
// Asserts go here
}
只要我伪造所有外部依赖项,一切都很好。 但是,还有一些我想运行的通过过滤器属性附加的代码(这对这个测试很重要,我不想单独测试它)。
此代码在应用程序中运行时会执行,但如果在测试中运行则不会执行。不管我是手动新建控制器,还是使用 DependencyResolver 检索它:
var someController = DependencyResolver.Current.GetService<SomeController>();
这显然是因为在正常运行时框架会正确创建和附加这些过滤器。
所以问题是 - 我如何在测试中复制这种行为并执行这些操作过滤器?
【问题讨论】:
-
谢谢,正如我所提到的,我不想单独测试动作过滤器
标签: c# unit-testing asp.net-mvc-4 bdd autofac