Чтобы создать UrlHelper
, вам нужно RequestContext
. Чтобы создать функционал RequestContext
, вам нужны HttpContextBase
и RouteData
. Второй, RouteData
, должен быть простым для построения. HttpContextBase
, вы должны издеваться.
Для этого я бы посоветовал вам взглянуть на Скотта Х MvcMockHelpers . Части этого немного устарели, но я думаю, что это достаточно хорошо для этого конкретного теста - все, что вам действительно нужно, это метод FakeHttpContext
и его зависимости. Если вы возьмете эту библиотеку, ваш код будет выглядеть примерно так:
[TestMethod]
public void Can_write_more_floorplans()
{
const long productID = 12345;
const int pageIndex = 10;
var httpContext = FakeHttpContext(); // From the MvcMockHelpers
var routeData = new RouteData();
var requestContext = new RequestContext(httpContext, routeData);
var urlHelper = new UrlHelper(requestContext);
string floorplans = MoreFloorplans(urlHelper, productID, pageIndex);
Assert.AreEqual(some_string, floorplans);
}
Я знаю, вы говорите, что пытаетесь использовать проект MvcContrib TestHelper
, но, насколько я знаю, эта библиотека предназначена для тестирования контроллеров. Я не уверен, достаточно ли он гранулирован для тестирования компонента более низкого уровня. Тебе действительно не нужны все эти вещи; все, что вам нужно, это RequestContext
.