我对将使用TDD在很大程度上写了一个新的MVC应用程序开始发展。 我想补充一些集成测试,以确保完全有线应用(我用StructureMap海委会,NHibernate的持久性)按预期工作。
虽然我打算写硒几个功能烟雾测试,可维护性的原因,我宁愿做我最集成测试通过直接调用,使用好老的C#我的控制器动作。
有一个如何做到这一点少得惊人的指导,让我带刺的攻击计划
- 拉都启动代码出来的Global.asax,并成为一个单独的类
- 试图利用MvcContrib-TestHelper或类似创建ASP.NET依赖(上下文,请求等)
我已经完成第1步,但真的不知道如何继续执行步骤2的任何指导,将不胜感激。
public class Bootstrapper
{
public static void Bootstrap()
{
DependencyResolverInitializer.Initialize();
FilterConfig.RegisterFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
ModelBinders.Binders.DefaultBinder = new SharpModelBinder();
}
}
public class DependencyResolverInitializer
{
public static Container Initialize()
{
var container = new Container();
container.Configure(x => x.Scan(y =>
{
y.Assembly(typeof(Webmin.UI.FilterConfig).Assembly);
y.WithDefaultConventions();
y.LookForRegistries();
}));
DependencyResolver.SetResolver(new StructureMapDependencyResolver(container));
return container;
}
}
public class StructureMapDependencyResolver : IDependencyResolver
{
private readonly IContainer _container;
public StructureMapDependencyResolver(IContainer container)
{
_container = container;
}
public object GetService(Type serviceType)
{
if (serviceType.IsAbstract || serviceType.IsInterface) {
return _container.TryGetInstance(serviceType);
}
return _container.GetInstance(serviceType);
}
public IEnumerable<object> GetServices(Type serviceType)
{
return _container.GetAllInstances(serviceType).Cast<object>();
}
}