public void Scan_SampleAssemblyWithCompositionRoot_CallsComposeMethodOnce() { var containerMock = new ContainerMock(new MockContext<IServiceContainer>()); var assemblyScanner = new AssemblyScanner(new ConcreteTypeExtractor(), new CompositionRootTypeExtractor(), new CompositionRootExecutor(containerMock)); SampleCompositionRoot.CallCount = 0; assemblyScanner.Scan(typeof(SampleCompositionRoot).Assembly, containerMock); Assert.AreEqual(1, SampleCompositionRoot.CallCount); }
public void Execute_CompositionRootType_IsCreatedAndExecuted() { CompositionRootMock compositionRootMock = new CompositionRootMock(); var serviceContainerMock = new ContainerMock(); var executor = new CompositionRootExecutor(serviceContainerMock, (t) => compositionRootMock); executor.Execute(typeof(CompositionRootMock)); compositionRootMock.Assert(c => c.Compose(The<IServiceContainer>.IsAnyValue), Invoked.Once); }
public void ScanUsingPredicate_SampleAssemblyWithCompositionRoot_DoesNotCallCompositionRoot() { var containerMock = new ContainerMock(new MockContext<IServiceContainer>()); var assemblyScanner = new AssemblyScanner(new ConcreteTypeExtractor(), new CompositionRootTypeExtractor(), new CompositionRootExecutor(containerMock)); SampleCompositionRoot.CallCount = 0; assemblyScanner.Scan(typeof(SampleCompositionRoot).Assembly, containerMock,() => null, (s, t) => true); Assert.AreEqual(0, SampleCompositionRoot.CallCount); }
private MockContext<IServiceContainer> GetContainerMock(Func<ILifetime> lifetimeFactory, Func<Type, Type, bool> shouldRegister) { var mockContext = new MockContext<IServiceContainer>(); var containerMock = new ContainerMock(mockContext); var assemblyScanner = new AssemblyScanner(new ConcreteTypeExtractor(), new CompositionRootTypeExtractor(), new CompositionRootExecutor(containerMock)); assemblyScanner.Scan(typeof(IFoo).Assembly, containerMock, lifetimeFactory, shouldRegister); return mockContext; }
public void Execute_CompositionRootType_IsCreatedAndExecutedOnlyOnce() { SampleCompositionRoot.CallCount = 0; var serviceContainerMock = new ContainerMock(new MockContext<IServiceContainer>()); var executor = new CompositionRootExecutor(serviceContainerMock); executor.Execute(typeof(SampleCompositionRoot)); executor.Execute(typeof(SampleCompositionRoot)); Assert.AreEqual(1, SampleCompositionRoot.CallCount); }
public void GetInstanceThrowsActivationExceptionWhenComponentNotFound() { var container = new ContainerMock(); var adapter = new CommonServiceLocatorAdapter(container); container.AddExpectation("Resolve", () => { throw new ServiceNotFoundException(typeof(IService)); }); Assert.Throws<ActivationException>(() => adapter.GetInstance<IService>()); }
private MockContext<IServiceContainer> GetContainerMock(Func<ILifetime> lifetimeFactory, Func<Type, Type, bool> shouldRegister) { var containerMock = new ContainerMock(); var compositionRootMock = new CompositionRootMock(); var compositionRootTypeExtractorMock = new TypeExtractorMock(); compositionRootTypeExtractorMock.Arrange(c => c.Execute(The<Assembly>.IsAnyValue)).Returns(Type.EmptyTypes); var assemblyScanner = new AssemblyScanner(new ConcreteTypeExtractor(), compositionRootTypeExtractorMock, new CompositionRootExecutor(containerMock,t => compositionRootMock)); assemblyScanner.Scan(typeof(IFoo).Assembly, containerMock, lifetimeFactory, shouldRegister); return containerMock; }
public void GetInstanceTranslatesToResolveOnContainer() { var container = new ContainerMock(); var weakResolveWasCalled = false; container.AddExpectation("Resolve", () => { weakResolveWasCalled = true; return new ClassWithNoDependencies(); }); var adapter = new CommonServiceLocatorAdapter(container); adapter.GetInstance<IService>(); Assert.True(weakResolveWasCalled); }
public void BadModuleThrowsException() { var catalog = new ModuleCatalog(); catalog.AddModule<BadModule>(); var containerMock = ContainerMock.CreateMock(); var initializer = new ModuleInitializer(containerMock.Object); var manager = new ModuleManager(initializer, catalog); manager.LoadModuleCompleted += OnModuleLoaded; void OnModuleLoaded(object sender, LoadModuleCompletedEventArgs args) { Assert.Equal(nameof(BadModule), args.ModuleInfo.ModuleName); Assert.NotNull(args.Error); Assert.Equal(nameof(BadModule.RegisterTypes), args.Error.Message); manager.LoadModuleCompleted -= OnModuleLoaded; } var ex = Record.Exception(() => manager.LoadModule(nameof(BadModule))); }
public void ScanUsingPredicate_SampleAssemblyWithCompositionRoot_DoesNotCallCompositionRoot() { var compositionRootMock = new CompositionRootMock(); var containerMock = new ContainerMock(); var assemblyScanner = new AssemblyScanner(new ConcreteTypeExtractor(), new CompositionRootTypeExtractor(new CompositionRootAttributeExtractor()), new CompositionRootExecutor(containerMock, t => compositionRootMock)); assemblyScanner.Scan(typeof(AssemblyScannerTests).Assembly, containerMock, () => null, (s, t) => true); compositionRootMock.Assert(c => c.Compose(containerMock), Invoked.Never); }
public void Scan_SampleAssemblyWithCompositionRoot_CallsComposeMethodOnce() { var compositionRootMock = new CompositionRootMock(); var containerMock = new ContainerMock(); var compositionRootExtractorMock = new TypeExtractorMock(); compositionRootExtractorMock.Arrange(c => c.Execute(The<Assembly>.IsAnyValue)).Returns(new []{typeof(CompositionRootMock)}); var assemblyScanner = new AssemblyScanner(new ConcreteTypeExtractor(), compositionRootExtractorMock, new CompositionRootExecutor(containerMock, t => compositionRootMock)); assemblyScanner.Scan(typeof(AssemblyScannerTests).Assembly, containerMock); compositionRootMock.Assert(c => c.Compose(containerMock), Invoked.Once); }
public void Register_Assembly_RegistersConcreteTypeWithBaseclass() { var mockContext = new MockContext<IServiceContainer>(); var containerMock = new ContainerMock(mockContext); AssemblyScanner assemblyScanner = new AssemblyScanner(new ConcreteTypeExtractor(), new CompositionRootTypeExtractor(), new CompositionRootExecutor(containerMock)); assemblyScanner.Scan(typeof(IFoo).Assembly, containerMock, () => null, (s,t) => true); mockContext.Assert(r => r.Register(typeof(Foo), typeof(ConcreteFooWithBaseClass), "ConcreteFooWithBaseClass", null)); }
private MockContext<IServiceContainer> GetContainerMock(Type type) { var compositionRootExtractorMock = new TypeExtractorMock(); compositionRootExtractorMock.Arrange(c => c.Execute(The<Assembly>.IsAnyValue)).Returns(Type.EmptyTypes); var concreteTypeExtractorMock = new TypeExtractorMock(); concreteTypeExtractorMock.Arrange(c => c.Execute(The<Assembly>.IsAnyValue)).Returns(new Type[] { type }); var scanner = new AssemblyScanner(concreteTypeExtractorMock, compositionRootExtractorMock, null, new GenericArgumentMapper()); var containerMock = new ContainerMock(); scanner.Scan(typeof(IFoo).Assembly, containerMock, () => null, (st, ip) => true); return containerMock; }