public void SenderFor_WhenCalledTwice_CallsFactoryOnce() { // Arrange var cache = new SenderCache(requestRouter, monitorCache); cache.AddFactory(factory); // Act var sender1 = cache.SenderFor <object>(); var sender2 = cache.SenderFor <object>(); // Assert mockFactory.Verify(m => m.CreateSender(It.IsIn(address)), Times.Once); }
public void SenderFor_WhenCalledTwice_ReturnsTheSameInstance() { // Arrange var cache = new SenderCache(requestRouter, monitorCache); cache.AddFactory(factory); // Act var sender1 = cache.SenderFor <object>(); var sender2 = cache.SenderFor <object>(); // Assert Assert.That(sender1, Is.SameAs(sender2)); }
public void SenderFor_WithNoRouting_ThrowsMissingFactoryException() { // Arrange var cache = new SenderCache(requestRouter, monitorCache); // Act TestDelegate senderFor = () => cache.SenderFor <object>(); // Assert Assert.That(senderFor, Throws.TypeOf <MissingFactoryException>()); }
public void SenderFor_WithNoPreresolvedSender_AddsMonitorToMonitorCache() { // Arrange var cache = new SenderCache(requestRouter, monitorCache); cache.AddFactory(factory); // Act var resolvedSender = cache.SenderFor <object>(); // Assert mockMonitorCache.Verify(m => m.AddMonitor(It.IsIn(senderMonitor)), Times.Once); }
public void SenderFor_WithNoFactory_ThrowsMissingFactoryException() { // Arrange var cache = new SenderCache(requestRouter, monitorCache); var senderRouting = SenderRouting.For <ISender>(address); mockRequestRouter .Setup(m => m.RoutingFor <object>(out senderRouting)) .Returns(true); // Act TestDelegate senderFor = () => cache.SenderFor <object>(); // Assert Assert.That(senderFor, Throws.TypeOf <MissingFactoryException>()); }
public void SenderFor_WithRoutingAndFactory_ReturnsSender() { // Arrange var cache = new SenderCache(requestRouter, monitorCache); var senderRouting = SenderRouting.For <ISender>(address); mockRequestRouter .Setup(m => m.RoutingFor <object>(out senderRouting)) .Returns(true); mockFactory .Setup(m => m.CreateSender(It.IsAny <IAddress>())) .Returns(sender); cache.AddFactory(factory); // Act var resolvedSender = cache.SenderFor <object>(); // Assert Assert.That(resolvedSender, Is.EqualTo(sender)); }