Зарегистрируйте UrlHelper, используя инъекцию Unity Dependency - PullRequest
1 голос
/ 02 ноября 2011

Как зарегистрировать UrlHelper с помощью Unity (Dependency Injection).нам нужен этот объект для построения динамических путей в доменном объекте.

1 Ответ

4 голосов
/ 12 апреля 2012

Оберните UrlHelper и напишите свой интерфейс с требуемыми методами.

Затем зарегистрируйте фабричный класс:

container.RegisterType<IUrlFactory, UrlFactory>();

С интерфейсом:

public interface IUrlFactory
{
    IUrlWrapper Create();
}

Изатем в реализации вы можете сделать:

class UrlFactory : IUrlFactory
{
    public IUrlWrapper Create()
    {
        var context = new HttpContextWrapper(HttpContext.Current);
        var routeData = RouteTable.Routes.GetRouteData(context);
        return new UrlWrapper(new UrlHelper(new RequestContext(context, routeData)));
    }
}

И когда вы хотите написать тест для макета URL, вы можете сделать что-то вроде этого (используется MOQ):

var urlMock = new Mock<IUrlWrapper>();
urlMock.Setup(x => x.GetSubDomain()).Returns(string.Empty);

var urlFactoryMock = new Mock<IUrlFactory>();
urlFactoryMock.Setup(x => x.Create()).Returns(_urlMock.Object);
...