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); }
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 GetInstance_UnknownService_ExecutesCompositionRootInSourceAssembly() { var container = new ServiceContainer(); var compositionRootMock = new CompositionRootMock(); compositionRootMock.Arrange(c => c.Compose(container)).Callback<IServiceContainer>(c => c.Register<IFoo, Foo>()); var compositionRootTypeExtractorMock = new TypeExtractorMock(); compositionRootTypeExtractorMock.Arrange(c => c.Execute(The<Assembly>.IsAnyValue)).Returns(new[] {typeof(CompositionRootMock)}); var assemblyScanner = new AssemblyScanner(new ConcreteTypeExtractor(), compositionRootTypeExtractorMock, new CompositionRootExecutor(container, t => compositionRootMock), new GenericArgumentMapper()); container.AssemblyScanner = assemblyScanner; container.GetInstance<IFoo>(); compositionRootMock.Assert(c => c.Compose(container), Invoked.Once); }
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); }