модульный тест HtmlHelper на заказ TextBoxFor - PullRequest
2 голосов
/ 08 апреля 2011

Я создал метод расширения, который будет возвращать HTML-помощник TextBoxFor.Теперь я хочу выполнить его модульное тестирование, но оно выдает «ссылка на объект не установлена ​​на экземпляр объекта».

Метод расширения

public static MvcHtmlString TextBoxFor<TModel, TProperty>(this HtmlHelper htmlHelper,     .......)
{

    /* some logic here */
    ===> (Null Exception) 
    return htmlHelper.TextBoxFor(......);
}

Правильно издеваться над HtmlHelper, потому что я использовал его в нескольких местах.

1 Ответ

6 голосов
/ 19 января 2012

Не надо издеваться над HtmlHelper.Вы можете просто создать класс модели с поддельным представлением, например TestViewModel, и в своих модульных тестах просто сделать что-то вроде:

//-- Arrange
TestViewModel testViewModel = new TestViewModel()
            {
                Name = "sdfsd"
            };

IViewDataContainer dataContainerMock = MockRepository.GenerateStub<IViewDataContainer>();

dataContainerMock.ViewData = new ViewDataDictionary<TestViewModel>(testViewModel);

HtmlHelper<TestViewModel> myHelper =  new HtmlHelper<TestViewModel>(new ViewContext()
            {
                ViewData = new ViewDataDictionary<TestViewModel>(this._testViewModelWithoutMaxLength)
            }, this._dataContainerMock);

//-- Act 
MvcHtmlString result = //call your extension

//-- Assert 
//add asserts here

Немного поздно, но надеюсь, что для кого-то все еще в порядке

...