-
Notifications
You must be signed in to change notification settings - Fork 46
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
System.Collections.Generic.KeyNotFoundException : The given key 'Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceProviderEngineScope' was not present in the dictionary. #175
Comments
@mbhoek have you seen such error before? |
@gasparnagy It's a duplicate of solidtoken/SpecFlow.DependencyInjection#88 @sanjeev-chevireddy Can I ask you, from which version of the SpecFlow plugin are you migrating from? |
I actually encountered this in a project as well. I wrote it up to something we did wrong and since we were moving to using solely Bodi I ignored the issue. |
@mbhoek Specflow - 3.9.74, SolidToken.SpecFlow.DependencyInjection - 3.9.3 |
Hmm, that surprises me because I've only ever seen this problem in v3.9.3 of the SpecFlow plugin. I'll investigate. |
I encountered the same error earlier but had to make it work quickly so I changed back to the default container. That project was based on the playwright example from the docs. Of course, replacing Autofac with MS DI, and using newer versions of most packages. I will try to switch in that project again to see if I can get back the error. |
@mbhoek |
@mcraa Thanks that helps a lot! I'm trying to reproduce it in a unit test before solving it. |
Had the same issue when trying to inject |
For reproducing the steps, @mbhoek, using the MS DI, when trying to get scenario context an error occurs:
Causes this:
|
Another repro for this at: #247 (comment) |
I have analyzed the issue and found that this error is thrown when someone tries to access a test execution dependent service (e.g. I have provided a fix to show a better error message, but in many cases the core problem is an incompatibility with SpecFlow that allowed to access these services in So this issue will be closed as we have a better error message once #318 is merged. |
Reqnroll Version
2.0.2
Which test runner are you using?
NUnit
Test Runner Version Number
4.0.1
.NET Implementation
.NET 6.0
Test Execution Method
Visual Studio Test Explorer
Content of reqnroll.json configuration file
No response
Issue Description
System.Collections.Generic.KeyNotFoundException : The given key 'Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceProviderEngineScope' was not present in the dictionary.
TearDown : System.Collections.Generic.KeyNotFoundException : The given key 'Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceProviderEngineScope' was not present in the dictionary.
Stack Trace:
ConcurrentDictionary
2.ThrowKeyNotFoundException(TKey key) ConcurrentDictionary
2.get_Item(TKey key)<>c.b__9_21(IServiceProvider sp)
CallSiteRuntimeResolver.VisitFactory(FactoryCallSite factoryCallSite, RuntimeResolverContext context)
CallSiteVisitor
2.VisitCallSiteMain(ServiceCallSite callSite, TArgument argument) CallSiteRuntimeResolver.VisitDisposeCache(ServiceCallSite transientCallSite, RuntimeResolverContext context) CallSiteVisitor
2.VisitCallSite(ServiceCallSite callSite, TArgument argument)CallSiteRuntimeResolver.VisitConstructor(ConstructorCallSite constructorCallSite, RuntimeResolverContext context)
CallSiteVisitor
2.VisitCallSiteMain(ServiceCallSite callSite, TArgument argument) CallSiteRuntimeResolver.VisitRootCache(ServiceCallSite callSite, RuntimeResolverContext context) <59 more frames...> TestExecutionEngine.FireEventsAsync(HookType hookType) TestExecutionEngine.FireScenarioEventsAsync(HookType bindingEvent) TestExecutionEngine.OnScenarioEndAsync() TestRunner.OnScenarioEndAsync() CreateClaimFeature.TestTearDownAsync() GenericAdapter
1.GetResult()AsyncToSyncAdapter.Await[TResult](Func
1 invoke) AsyncToSyncAdapter.Await(Func
1 invoke)SetUpTearDownItem.RunSetUpOrTearDownMethod(TestExecutionContext context, IMethodInfo method)
SetUpTearDownItem.RunTearDown(TestExecutionContext context)
Steps to Reproduce
We are currently migrating from SpecFlow to ReQnRoll and have encountered the issue when running the tests after migrating from SolidToken.SpecFlow.DependencyInjection to Reqnroll.Microsoft.Extensions.DependencyInjection;
Please see our Startup method as shown below
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Reqnroll.Microsoft.Extensions.DependencyInjection;
[ScenarioDependencies]
public static IServiceCollection ConfigureServices()
{
var configuration = new ConfigurationBuilder().AddJsonFile("appsettings.json").Build();
var connectionString = configuration["ConnectionString"];
IServiceCollection services = new ServiceCollection();
return services
.AddSingleton(ConfigReader.GetBrowserSettingsData())
.AddSingleton(ConfigReader.GetAppSettingsData())
.AddSingleton<IReportContext, ReportContext>()
.AddSingleton<INotificationHelper, NotificationHelper>()
.AddSingleton<IReportHelper, ReportHelper>()
.AddSingleton<IPlaywrightDriver, PlaywrightDriver>()
.AddSingleton<IHelper, Helper>()
.AddSingleton<IApiContext, ApiContext>()
.AddSingleton<IDataContext, DataContext>()
.AddSingleton<ILoginPage, LoginPage>()
.AddSingleton<IDbContainerFactory, CosmosContainerFactory>()
.AddSingleton(provider =>
{
//Authorisation
var client = GetCosmosClient(connectionString );
return new CosmosContainerFactory(client, "Claims");
})
}
Link to Repro Project
No response
The text was updated successfully, but these errors were encountered: