public void When_resolving_type_with_hierarchical_lifetime_then_returns_same_instance_every_time() { using (var container = new UnityContainer()) { container.RegisterType <IFoo, Foo>(new HierarchicalLifetimeManager()); using (var resolver = new UnityDependencyResolver(container)) { IFoo parentResolve = (IFoo)resolver.GetService(typeof(IFoo)); IFoo scope1Resolve; IFoo scope2Resolve; using (var scope = resolver.BeginScope()) { scope1Resolve = (IFoo)scope.GetService(typeof(IFoo)); } using (var scope = resolver.BeginScope()) { scope2Resolve = (IFoo)scope.GetService(typeof(IFoo)); } Assert.IsNotNull(parentResolve); Assert.AreSame(parentResolve, scope1Resolve); Assert.AreSame(parentResolve, scope2Resolve); } } }
public void When_resolving_unregistered_type_inside_scope_then_throws() { using (var container = new UnityContainer()) { using (var resolver = new UnityDependencyResolver(container)) { using (var scope = resolver.BeginScope()) { AssertThrows <ResolutionFailedException>(() => scope.GetService(typeof(IFoo))); } } } }
public void When_resolving_concrete_controller_inside_scope_then_returns_injected_instance() { using (var container = new UnityContainer()) { container.RegisterInstance <IFoo>(new Foo { TestProperty = "value" }); using (var resolver = new UnityDependencyResolver(container)) { using (var scope = resolver.BeginScope()) { var actual = (TestController)scope.GetService(typeof(TestController)); Assert.AreEqual("value", actual.Foo.TestProperty); } } } }
public void When_disposing_scope_then_does_not_dispose_container() { using (var container = new UnityContainer()) { container.RegisterInstance <IFoo>(new Foo { TestProperty = "value" }); using (var resolver = new UnityDependencyResolver(container)) { resolver.BeginScope().Dispose(); var actual = (IFoo)resolver.GetService(typeof(IFoo)); Assert.AreEqual("value", actual.TestProperty); } } }