Для того, чтобы создать UrlHelper
, вам нужно RequestContext
. Чтобы создать функционирующий RequestContext
, вам нужны HttpContextBase
и RouteData
. Второй, RouteData
, должен быть прост в построении. HttpContextBase
, вы должны издеваться.
Для этого я предлагаю вам взглянуть на Скотта H's 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
.
спасибо, я попробую это – fregas