Тестирование HtmlHelpers в ASP.NET MVC

Если Xmlhttprequest с blob не является опцией, вы можете открыть файл в новом окне и проверить, не заселены ли элементы eny в этом теле окна с интервалом.

var form = document.getElementById("frmDownlaod");
 form.setAttribute("action","downoad/url");
 form.setAttribute("target","downlaod");
 var exportwindow = window.open("", "downlaod", "width=800,height=600,resizable=yes");
 form.submit();

var responseInterval = setInterval(function(){
	var winBody = exportwindow.document.body
	if(winBody.hasChildNodes()) // or 'downoad/url' === exportwindow.document.location.href
	{
		clearInterval(responseInterval);
		// do your work
		// if there is error page configured your application for failed requests, check for those dom elemets 
	}
}, 1000)
//Better if you specify maximun no of intervals

23
задан abatishchev 19 May 2013 в 07:16
поделиться

1 ответ

Основная проблема заключается в том, что вам приходится издеваться над HtmlHelper, потому что вы можете использовать методы помощника для получения маршрутов или значения или возвращая результат другого метода расширения. Класс HtmlHelper имеет довольно много свойств, и некоторые из них довольно сложные, например ViewContext или текущий контроллер.

Это сообщение от Бена Харта , в котором объясняется, как создать такой макет с помощью Moq. Может быть легко переведено в другую фальшивую среду.

Это моя версия Rhino Mocks, адаптированная к изменениям в MVC Framework. Он не полностью протестирован, но работает на меня, но не ожидайте отличных результатов:

    public static HtmlHelper CreateHtmlHelper(ViewDataDictionary viewData)
    {
        var mocks = new MockRepository();

        var cc = mocks.DynamicMock<ControllerContext>(
            mocks.DynamicMock<HttpContextBase>(),
            new RouteData(),
            mocks.DynamicMock<ControllerBase>());

        var mockViewContext = mocks.DynamicMock<ViewContext>(
            cc,
            mocks.DynamicMock<IView>(),
            viewData,
            new TempDataDictionary());

        var mockViewDataContainer = mocks.DynamicMock<IViewDataContainer>();

        mockViewDataContainer.Expect(v => v.ViewData).Return(viewData);

        return new HtmlHelper(mockViewContext, mockViewDataContainer);
    }
30
ответ дан 29 November 2019 в 02:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: