예제 #1
0
        public void GetLazyFactory_ShouldReturnProperFactory(string svcName)
        {
            var mockInjector = new Mock <IInjector>(MockBehavior.Strict);

            mockInjector
            .Setup(i => i.Get(It.IsAny <Type>(), It.IsAny <string>()))
            .Returns <Type, string>((type, name) => new Disposable());

            Func <IInjector, object> factory = ServiceActivator.GetLazyFactory(typeof(IDisposable), new OptionsAttribute {
                Name = svcName
            });

            Assert.That(factory, Is.Not.Null);

            Lazy <IDisposable> lazy = factory(mockInjector.Object) as Lazy <IDisposable>;

            Assert.That(lazy, Is.Not.Null);

            mockInjector.Verify(i => i.Get(It.IsAny <Type>(), It.IsAny <string>()), Times.Never);

            IDisposable retval = lazy.Value;

            Assert.That(retval, Is.InstanceOf <Disposable>());

            mockInjector.Verify(i => i.Get(It.Is <Type>(t => t == typeof(IDisposable)), It.Is <string>(s => s == svcName)), Times.Once);
        }
예제 #2
0
 public void GetLazyFactory_ShouldCache(string svcName)
 {
     Assert.AreSame(ServiceActivator.GetLazyFactory(typeof(IDisposable), new OptionsAttribute {
         Name = svcName
     }), ServiceActivator.GetLazyFactory(typeof(IDisposable), new OptionsAttribute {
         Name = svcName
     }));
 }