diff --git a/test/DryIoc.IssuesTests/GHIssue580_Scope_is_lost_in_IResolver_inside_scope_because_of_singleton.cs b/test/DryIoc.IssuesTests/GHIssue580_Scope_is_lost_in_IResolver_inside_scope_because_of_singleton.cs index 998516d2..ff70930d 100644 --- a/test/DryIoc.IssuesTests/GHIssue580_Scope_is_lost_in_IResolver_inside_scope_because_of_singleton.cs +++ b/test/DryIoc.IssuesTests/GHIssue580_Scope_is_lost_in_IResolver_inside_scope_because_of_singleton.cs @@ -7,7 +7,7 @@ public class GHIssue580_Scope_is_lost_in_IResolver_inside_scope_because_of_singl { public int Run() { - // Test_scope_inside_the_transient_dependency_of_the_scoped_service(); + Test_scope_inside_the_transient_dependency_of_the_scoped_service(); Test_scope_inside_the_transient_dependency_of_the_scoped_service_But_injected_first_in_singleton(); return 2; } @@ -29,19 +29,19 @@ public void Test_scope_inside_the_transient_dependency_of_the_scoped_service() transient.Do(); } - // [Test] // todo: @fixme + [Test] public void Test_scope_inside_the_transient_dependency_of_the_scoped_service_But_injected_first_in_singleton() { var container = new Container(); - container.Register(reuse: Reuse.Transient); + container.Register(setup: Setup.With(useParentReuse: true)); // THIS IS THE FIX! container.Register(reuse: Reuse.Singleton); container.Register(reuse: Reuse.Transient); container.Register(reuse: Reuse.Scoped); // resolving singleton first breaks the resolution in the Do below - var singleton = container.Resolve(); + container.Resolve(); using var scope = container.OpenScope(); @@ -51,34 +51,34 @@ public void Test_scope_inside_the_transient_dependency_of_the_scoped_service_But public class ServiceSingleton { - private readonly ServiceResolver _serviceResolver; + public readonly ServiceResolver ServiceResolver; public ServiceSingleton(ServiceResolver serviceResolver) => - _serviceResolver = serviceResolver; + ServiceResolver = serviceResolver; } public class ServiceTransient { - private readonly ServiceResolver _serviceResolver; + public readonly ServiceResolver ServiceResolver; public ServiceTransient(ServiceResolver serviceResolver) => - _serviceResolver = serviceResolver; + ServiceResolver = serviceResolver; public void Do() { - _ = _serviceResolver.GetService(); + _ = ServiceResolver.GetService(); } } public class ServiceResolver { - private readonly IResolver _resolver; + public readonly IResolver Resolver; public ServiceResolver(IResolver resolver) => - _resolver = resolver; + Resolver = resolver; public TService GetService() => - _resolver.Resolve(); + Resolver.Resolve(); } public class ServiceScoped