Тестирование Если класс активируется с помощью WebActivator и если добавить IModelBinder в ModelBinderProviders.BinderProviders. - PullRequest
0 голосов
/ 28 июля 2011

Уважаемые ребята из 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());
        }
    }
}

1 Ответ

0 голосов
/ 29 июля 2011

Извините, у вас проблемы с фрагментом кода, который я написал.

У меня нет доступа к исходному коду сейчас, но я посмотрю вечером (по британскому времени).

Как вы думаете, вы могли бы отправить мне свое решение, чтобы я мог повторить его на месте?Мой адрес электронной почты: jkonecki на gmail.com

ОБНОВЛЕНИЕ

Я получил ваш исходный код, но, к сожалению, он содержит ссылки на библиотеки, которые я не могу получить, поэтому не могу его скомпилировать.

Я создал отдельное решение (отправленное вам по электронной почте) с веб-приложением MVC3 и проектами модульного тестирования, в котором используется пользовательский механизм связывания моделей.Есть два теста, которые доказывают, что метод WebActivatorManager.Run правильно регистрирует пользовательский поставщик.

Попробуйте отладить свой модульный тест, чтобы убедиться, что метод Run вызывает ваш статический метод Start.

Исходный код WebActivator: здесь - вы можете получить его и пройти через него.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...