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); }
public void GetLazyFactory_ShouldCache(string svcName) { Assert.AreSame(ServiceActivator.GetLazyFactory(typeof(IDisposable), new OptionsAttribute { Name = svcName }), ServiceActivator.GetLazyFactory(typeof(IDisposable), new OptionsAttribute { Name = svcName })); }