我遵循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测试?
答案 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;