Я настроил Unity в своем приложении ASP.NET, и конфигурация загружается при получении первого запроса в Application_BeginRequest.затем контейнер Unity сохраняется в Global.ascx как свойство, так что мой другой класс может получить к нему доступ:
public static IUnityContainer ContainerHolder { get; set; }
IUnityContainer IContainerAccessor.Container
{
get { return ContainerHolder; }
}
ContainerHolder, содержит экземпляр контейнера во всем приложении, а свойство Container разрешает доступ к этому свойству в каждомсеанс.
Затем у меня есть класс UnityLocator, который позволяет мне получить доступ к этому свойству через приложение:
public static class UnityLocator
{
private static IUnityContainer Container
{
get
{
return ((IContainerAccessor)HttpContext.Current.ApplicationInstance).Container;
}
}
}
Все отлично работает!
У меня также есть метод для доступаэкземпляр из Unity:
UnityLocator.GetInstance<IThemeManager>();
protected Repository(ICustomCacheManager customCacheManager)
{
this.Cache = customCacheManager;
}
protected Repository()
: this(UnityLocator.GetInstance<ICustomCacheManager>())
{
}
это использовалось в моем приложении, чтобы я мог извлечь существующий экземпляр из Unity, чтобы я мог внедрить его в другие классы.Например, мое представление (страница asp.net) внедряет это в свой класс Presenter в качестве зависимости.
Теперь я хотел бы настроить для запуска мои модульные тесты.
Как я могу это сделатьтот?!Очевидно, что global.ascx там не существует, поэтому я подумал, что мне следует создать класс BaseTest и позволить всем моим тестам наследовать его.затем в конструкторе этого класса BaseTest я создаю свои экземпляры.Это правильный способ сделать это?
Как настроить модульные тесты с Unity сейчас?
Спасибо
ОБНОВЛЕНИЕ: добавлен UnityLocator.GetInstance.