Мне трудно регистрировать свои типы для Unity 2 в моих модульных тестах.
Вот фрагмент тестируемого класса:
public class SomeService : ISomeService
{
private int SomeVar { get; set; }
[Dependency]
public ISessionManager SessionManager { get; set; }
public SomeService()
{
SomeVar = SessionManager.Get<int>("SomeVar");
}
}
Вот что у меня есть в моем методе MSTest ClassInitialize:
private static ISomeService _someService;
private static IUnityContainer _unityContainer;
[ClassInitialize]
public static void MyClassInitialize(TestContext testContext)
{
var mockSessionManager = new Mock<ISessionManager>();
mockSessionManager.Setup(foo => foo.Get<int>(It.IsAny<string>())).Returns(1);
_unityContainer = new UnityContainer()
.RegisterInstance(mockSessionManager.Object)
.RegisterType<ISomeService, SomeService>(
new InjectionProperty("SessionManager"));
_someService = _unityContainer.Resolve<IAdditionalCoveragesService>();
}
Для каждого имеющегося у меня метода тестирования, когда я отлаживаю и захожу в конструктор SomeService, он говорит, что SessionManager имеет значение null. Что я делаю неправильно, пытаясь зарегистрировать свои типы в Unity?
Примечание. Я использую Moq для настройки фиктивного менеджера сеансов, который должен быть внедрен в SomeService.
Спасибо !!!