我正在为IOC编写单元测试。我的接口之一注入了IServerEvents。我通过以下方式包含事件: ServerEventsFeature serverEventsFeature = new ServerEventsFeature() { LimitToAuthenticatedUsers = false, NotifyChannelOfSubscriptions = false, OnConnect = (eventSubscription, dictionary) => { }, OnSubscribe = (eventSubscription) => { } };但是,container.resolve在调试时会出现以下错误(不是通过单元测试):'container.Resolve<IServerEvents>()' threw an exception of type 'System.Exception' Data: {System.Collections.ListDictionaryInternal} HResult: -2146233088 HelpLink: null InnerException: {System.InvalidOperationException: No service for type 'ServiceStack.IServerEvents' has been registered. at Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(IServiceProvider provider, Type serviceType) at Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService[T](IServiceProvider provider) at Funq.Container.ResolveImpl[TService](String name, Boolean throwIfMissing)} Message: "Error trying to resolve Service 'ServiceStack.IServerEvents' or one of its autowired dependencies (see inner exception for details)." Source: "ServiceStack" StackTrace: " at Funq.Container.ResolveImpl[TService](String name, Boolean throwIfMissing)" TargetSite: {TService ResolveImpl[TService](System.String, Boolean)}这在正常使用中确实可以正常工作,但是接口的手动解析不起作用。我想知道的是:A)对服务器事件的这种集成进行单元测试的正确方法B)我是否应该在单元测试中使用RegisterAs ()在容器上模拟IServerEventsC)为什么注入工作正常,但是container.Resolve()失败。任何反馈表示赞赏。 最佳答案 您不能在单元测试中使用ServerEventsFeature,而只能在integration test中使用它。您可以在ServerEventTests中找到一些工作示例。由于ServerEventsFeature是插件,因此需要将其注册为插件才能运行:Plugins.Add(new ServerEventsFeature { ... });注册插件时哪个会register the MemoryServerEvents dependency:container.Register<IServerEvents>(memoryServerEvents);关于c# - IServerSideEvents的IOC注入(inject),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54406393/
10-11 02:30