Kri*_*s-I 5 c# asp.net-mvc unit-testing unity-container asp.net-mvc-4
我使用Unity创建的实例CustomerService。这适用于ASP.NET MVC应用程序中的以下代码。
当我创建ASP.NET MVC应用程序时,我创建了ASP.NET MVC测试项目。我想测试一下动作(在这里:)/Home/Index。问题是我无法设定Unity。我想创建一个真正的行动呼吁,而不是嘲笑。
您是否知道如何在测试项目中进行设置?我尝试了此操作,但是CustomerService在调用控制器时,找不到用于创建用作参数的实例的正确语法。
[TestMethod]
public void Index()
{
var container = UnityConfig.GetConfiguredContainer();
//I don't find the right syntax for resolve
ICustomerService customerService = container.Resolve??????
HomeController controller = new HomeController(customerService);
ViewResult result = controller.Index() as ViewResult;
Assert.IsNotNull(result);
container.Dispose();
}
Run Code Online (Sandbox Code Playgroud)
ASP.NET MVC应用程序中使用的工作代码
namespace MyTestMVC
{
public class HomeController : Controller
{
private readonly ICustomerService _customerService;
public HomeController(ICustomerService customerService)
{
_customerService = customerService;
}
public ActionResult Index()
{
var result = _customerService.MyMethod();
//.....
return View();
}
}
}
//I set Unity like this :
namespace MyTestMVC.App_Start
{
public class UnityConfig
{
private static Lazy<IUnityContainer> container = new Lazy<IUnityContainer>(() =>
{
var container = new UnityContainer();
RegisterTypes(container);
return container;
});
public static IUnityContainer GetConfiguredContainer()
{
return container.Value;
}
public static void RegisterTypes(IUnityContainer container)
{
container.RegisterType<ICustomerService, CustomerService>();
}
}
}
[assembly: WebActivatorEx.PreApplicationStartMethod(typeof(MyTestMVC.App_Start.UnityWebActivator), "Start")]
[assembly: WebActivatorEx.ApplicationShutdownMethod(typeof(MyTestMVC.App_Start.UnityWebActivator), "Shutdown")]
namespace MyTestMVC.App_Start
{
public static class UnityWebActivator
{
/// <summary>Integrates Unity when the application starts.</summary>
public static void Start()
{
var container = UnityConfig.GetConfiguredContainer();
FilterProviders.Providers.Remove(FilterProviders.Providers.OfType<FilterAttributeFilterProvider>().First());
FilterProviders.Providers.Add(new UnityFilterAttributeFilterProvider(container));
DependencyResolver.SetResolver(new UnityDependencyResolver(container));
}
public static void Shutdown()
{
var container = UnityConfig.GetConfiguredContainer();
container.Dispose();
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4409 次 |
| 最近记录: |