public void ShouldRegisterWithTargetType() { //Arrange var assembly = Assembly.GetAssembly(typeof(TestAutofacRegistration)); A.CallTo(() => registrationHelper.GetAssemblies()) .Returns(new List <Assembly> { assembly }); A.CallTo(() => registrationHelper.GetTypesImplementing <IBootstrapperAssemblyProvider>(assembly)) .Returns(new List <Type> { typeof(LoadedAssemblyProvider), typeof(ReferencedAssemblyProvider) }); var containerExtension = new AutofacExtension(registrationHelper, options); var containerBuilder = new ContainerBuilder(); var container = containerBuilder.Build(); containerExtension.InitializeContainer(container); //Act containerExtension.RegisterAll <IBootstrapperAssemblyProvider>(); var result = container.Resolve <IEnumerable <IBootstrapperAssemblyProvider> >().ToList(); //Assert A.CallTo(() => registrationHelper.GetAssemblies()).MustHaveHappened(); A.CallTo(() => registrationHelper.GetTypesImplementing <IBootstrapperAssemblyProvider>(assembly)).MustHaveHappened(); Assert.IsInstanceOfType(result, typeof(IEnumerable <IBootstrapperAssemblyProvider>)); Assert.IsTrue(result.Any()); Assert.IsTrue(result.Any(c => c is LoadedAssemblyProvider)); Assert.IsTrue(result.Any(c => c is ReferencedAssemblyProvider)); }
public void Register_WhenInvokedWithNonGenericTargetAndContainerIsNotInitialized_ShouldThrowException() { //Arrange var containerExtension = new AutofacExtension(registrationHelper, options); //Act var result = ExceptionAssert.Throws <NoContainerException>(() => containerExtension.RegisterAll(typeof(IGenericTest <>))); //Assert Assert.AreEqual(NoContainerException.DefaultMessage, result.Message); }
public void RegisterAll_WhenInvokedWithNonGenericTargetType_ShouldRegisterType() { //Arrange var containerExtension = new AutofacExtension(registrationHelper, options); var containerBuilder = new ContainerBuilder(); var container = containerBuilder.Build(); containerExtension.InitializeContainer(container); var thisAssembly = Assembly.GetCallingAssembly(); A.CallTo(() => registrationHelper.GetAssemblies()).Returns(new[] { thisAssembly }); A.CallTo(() => registrationHelper.GetTypesImplementing(thisAssembly, typeof(IGenericTest <>))) .Returns(new[] { typeof(GenericTest <>) }); //Act containerExtension.RegisterAll(typeof(IGenericTest <>)); var result1 = container.Resolve <IGenericTest <object> >(); var result2 = container.Resolve <IGenericTest <string[]> >(); //Assert result1.ShouldBeOfType <GenericTest <object> >(); result2.ShouldBeOfType <GenericTest <string[]> >(); }