Stack Exchange的各位同学。
我正在尝试测试是否将我的自定义模型绑定器添加到ModelBinderProviders.BinderProviders集合中。我决定通过WebActivator激活它,以避免扰乱global.asax,一切都很好,但测试:
我尝试使用WebActivator.ActivationManager.Run((方法,但我的东西没有加载。我的测试中有这样的东西:
[TestMethod]
public void TemplateModelBinderProvider_Should_Be_Registered_In_BinderProviders()
{
WebActivator.ActivationManager.Run();
IModelBinderProvider templateModelBinderProvider = ModelBinderProviders.BinderProviders.
Where(x => x is TemplateModelBinderProvider).
FirstOrDefault();
Assert.IsNotNull(templateModelBinderProvider);
}
这是我的app_Start类:
[assembly: WebActivator.PreApplicationStartMethod(typeof(MVC.App_Start.MVCBindings), "Start")]
namespace MVC.App_Start
{
public static class MVCBindings
{
public static void Start()
{
ModelBinderProviders.BinderProviders.Add(new TemplateModelBinderProvider());
}
}
}
很抱歉我写的代码有问题。
我现在无法访问源代码,但晚上(英国时间(会看一看。
你认为你可以把你的解决方案发给我,这样我就可以在本地复制它吗?我的电子邮件是gmail.com 上的jkonecki
更新
我收到了你的源代码,但不幸的是,它包含了我无法获得的库的引用,所以我无法编译它
我使用MVC3 web应用程序和单元测试项目创建了一个单独的解决方案(通过电子邮件发送给您(,该解决方案使用您提供的自定义模型绑定器。有两个测试可以证明WebActivatorManager.Run方法正确注册了一个自定义提供程序。
尝试调试单元测试,以确保Run
方法调用静态Start
方法。
WebActivator的源代码就在这里——你可能想获得它并逐步完成。