public void CreateServiceHostThrowsIfContractTypeIsNull() { SetContainer(_container.Object); var fake = new ServiceHostFactoryStub(); Assert.Throws <ArgumentNullException>("contractType", () => fake.CallCreateServiceHost(null, null)); }
public void CreateServiceHostThrowsIfContainerIsNull() { SetContainer(null); var fake = new ServiceHostFactoryStub(); Assert.Throws <InvalidOperationException>(() => fake.CallCreateServiceHost(typeof(ServiceHostFactoryStub), null)); }
public void ServiceHostFactoryThrowsIfSingletonServiceIsNotRegisteredAsSingleton() { var contractType = typeof(IService); var stub = new ServiceHostFactoryStub(); var addresses = new Uri[0]; var(instance, _) = SetupFactoryForSingletonResolution <SingletonService>(contractType, typeof(SingletonService)); Assert.Throws <InvalidOperationException>(() => stub.CallCreateServiceHost(contractType, addresses)); _container.Verify(c => c.Resolve(contractType, IfUnresolved.Throw), Times.Never); }
public void NonSingletonServicesAreNotCreatedAsSingletonAndNotSetInServiceHost() { var contractType = typeof(IService); var addresses = new Uri[0]; var stub = new ServiceHostFactoryStub(); var(instance, _) = SetupFactoryForSingletonResolution <NonSingletonService>(contractType, typeof(NonSingletonService)); var createdServiceHost = stub.CallCreateServiceHost(contractType, addresses); _container.Verify(c => c.Resolve(contractType, IfUnresolved.Throw), Times.Never); Assert.Null(createdServiceHost.SingletonInstance); }
public void SingletonServicesAreCreatedAsSingletonAndSetInServiceHost() { var contractType = typeof(IService); var stub = new ServiceHostFactoryStub(); var addresses = new Uri[0]; var(instance, factory) = SetupFactoryForSingletonResolution <SingletonService>(contractType, typeof(SingletonService)); factory.SetupGet(f => f.Reuse).Returns(Reuse.Singleton); var createdServiceHost = stub.CallCreateServiceHost(contractType, addresses); _container.Verify(c => c.Resolve(contractType, IfUnresolved.Throw), Times.Once); Assert.Same(instance, createdServiceHost.SingletonInstance); }