public void LifetimesShouldBeRespected() { var di = new ServiceManager(); di.RegisterSingleton <IIndependentService, IndependentService>(); di.RegisterScoped <IDependentService, DependentService>(); di.BuildSingletons(); var scopedDi = di.CreateScope(); var independentService1 = di.GetService <IIndependentService>(); var dependentService1 = di.GetService <IDependentService>(); var independentService2 = scopedDi.GetService <IIndependentService>(); var dependentService2 = scopedDi.GetService <IDependentService>(); independentService1.Should().Be(independentService2); dependentService1.Should().NotBe(dependentService2); independentService1.Should().NotBeNull(); independentService2.Should().NotBeNull(); dependentService1.Should().NotBeNull(); dependentService2.Should().NotBeNull(); }
public void BuildAllSingletons() { var shouldCallConstructor = false; var shouldNotCallConstructor = false; var di = new ServiceManager(); di.RegisterSingleton <IIndependentService, IndependentService>(sp => { shouldCallConstructor = true; return(new IndependentService()); }); di.RegisterTransient <IDependentService, DependentService>(sp => { shouldNotCallConstructor = true; return(new DependentService(sp.GetService <IIndependentService>())); }); di.BuildSingletons(); shouldCallConstructor.Should().BeTrue(); shouldNotCallConstructor.Should().BeFalse(); }