public void ShouldSelectConstructorWithMostResolvableParametersFromTypeImplementation() { var map = new Mock<IDependencyContainer>(); map.Expect(m => m.Contains(It.IsAny<Dependency>())).Returns(true); map.Expect(m => m.Dependencies).Returns(new IDependency[] { }); var expectedConstructor = typeof(Vehicle).GetConstructor(new Type[] { typeof(IPerson) }); IImplementation<ConstructorInfo> implementation = new TransientType(typeof(Vehicle), map.Object, new ConstructorResolver()); Assert.AreSame(implementation.Target, expectedConstructor); }
public void ShouldCallCacheOnCachedServiceType() { var map = new DependencyMap(); var dependency = new Dependency(typeof(IFoo)); var implementation = new TransientType(typeof(Foo), map, new ConstructorResolver()); var cachedImplementation = new CachedInstantiation(implementation); map.AddSingletonService<ICache, MockCache>(); map.AddService(dependency, cachedImplementation); // Compile the container var container = map.CreateContainer(); // Grab the service instance var firstResult = container.GetInstance<IFoo>(); var secondResult = container.GetInstance<IFoo>(); Assert.IsNotNull(firstResult); Assert.AreSame(firstResult, secondResult); }