Unity PerRequestLifetimeManager UnitTest

时间:2014-01-21 11:27:11

标签: unit-testing unity-container

我遵循Unity配置:

public static void RegisterTypes(IUnityContainer container)
    {
        ...
        container.RegisterType<IRootDatabaseContext, RootEntities>(new PerRequestLifetimeManager());
        ...
    }

一切正常。但是当我也想测试这种方法时:

[TestMethod]
public void AssertUnityConfigAreValid()
{
    using (var container = new UnityContainer())
    {
        UnityConfig.RegisterTypes(container);
        foreach (var registration in container.Registrations)
        {
            container.Resolve(registration.RegisteredType, registration.Name);
        }
    }
}

当我运行此测试时,我收到错误:

  

InvalidOperationException - 由于对象的当前状态,操作无效。

如何将PerTimequestLifetimeManager中的LifeTimeManager替换为Unit测试?

1 个答案:

答案 0 :(得分:2)

我刚刚找到了解决此问题的方法:

只需在测试

中的此行之前添加以下代码
  

UnityConfig.RegisterTypes(容器);

var request = new HttpRequest("fake", "https://127.0.0.1", null);
var respons = new HttpResponse(new StringWriter());
var context = new HttpContext(request, respons);
HttpContext.Current = context;