示例#1
0
        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);
        }
示例#2
0
        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);
        }