public void SingletonDependencyIsDisposedAfterItsConsumer( [ValueSource(nameof(SingletonRegistrationTypes))] TestDependencyLifeStyleRegistration singletonRegistration, [ValueSource(nameof(DisposableConsumerRegistrationTypes))] TestRegistrationType consumerRegistration, [ValueSource(nameof(DependencyRegistrationTypes))] TestRegistrationType dependencyRegistration) { var container = new Container(r => singletonRegistration.Invoke( () => dependencyRegistration.Invoke(r), () => consumerRegistration.Invoke(r))); var transientLifeScope = container.Resolve <IDependencySpyService>(out var disposalOrderSpy); _ = disposalOrderSpy.ActualDependency; transientLifeScope.Dispose(); container.Dispose(); Assert.That(disposalOrderSpy, Has.Property(nameof(DisposalOrderSpy.WasDependencyDisposedBeforeThis)).False); }
public void SingletonDependencyIsNotDisposedWithTransientLifeScope( [ValueSource(nameof(SingletonRegistrationTypes))] TestDependencyLifeStyleRegistration singletonRegistration, [ValueSource(nameof(DependentServiceRegistrationTypes))] TestRegistrationType dependentServiceRegistration, [ValueSource(nameof(DependencyRegistrationTypes))] TestRegistrationType dependencyRegistration) { var container = new Container(r => singletonRegistration.Invoke( () => dependencyRegistration.Invoke(r), () => dependentServiceRegistration.Invoke(r))); var transientLifeScope = container.Resolve <IDependencySpyService>(out _); transientLifeScope.Dispose(); container.Resolve <IDependencySpyService>(out var dependencySpy); var disposableSpy = dependencySpy.ActualDependency; Assert.That(disposableSpy, Has.Property(nameof(DisposableSpy.IsDisposed)).False); }