0

来自 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());
        }
    }
}
4

1 回答 1

0

抱歉,我写的代码有问题。

我现在无法访问源代码,但会在晚上(英国时间)看看。

您认为您可以将您的解决方案发送给我,以便我可以在本地复制它吗?我的电子邮件是 gmail.com 的 jkonecki

更新

我已收到您的源代码,但不幸的是它包含对我无法获得的库的引用,因此我无法编译它。

我已经创建了一个单独的解决方案(通过电子邮件发送给您),其中包含使用您提供的自定义模型绑定器的 MVC3 Web 应用程序和单元测试项目。有两个测试证明 WebActivatorManager.Run 方法正确注册了自定义提供程序。

尝试调试您的单元测试以确保该Run方法调用您的静态Start方法。

WebActivator 源代码在这里- 您可能想要获取它并逐步完成。

于 2011-07-29T08:28:57.830 回答