如何解决使用 Effort 的假 DbConnection 有问题
Unit testing in C# using xUnit,Entity Framework,Effort and ASP.NET Boilerplate.
LocalIocManager.IocContainer.Register(
Component.For<DbConnection>()
.UsingFactoryMethod(Effort.DbConnectionFactory.CreateTransient)
.LifestyleSingleton()
);
当我调试时看到 LocalIocManager.IocContainer 为空。请帮我解决这个问题。
//单元测试抛出异常:
Test Name: SimpleTaskSystem.Test.Tasks.TaskAppService_Tests.Should_Get_Tasks
Test FullName: SimpleTaskSystem.Test.SimpleTaskSystem.Test.Tasks.TaskAppService_Tests.SimpleTaskSystem.Test.Tasks.TaskAppService_Tests.Should_Get_Tasks
Test Source: D:\Working\Projects\ASPNETBoilerplate\ASPNETMVC5\SimpleTaskSystem\5.5.0\src\Tests\SimpleTaskSystem.Test\Tasks\TaskAppService_Tests.cs : line 22
Test Outcome: Failed
Test Duration: 0:00:00
Test Name: SimpleTaskSystem.Test.Tasks.TaskAppService_Tests.Should_Get_Tasks
Test Outcome: Failed
Result StackTrace:
at Effort.DbConnectionFactory.CreateTransient()
at Castle.MicroKernel.Registration.ComponentRegistration`1.<>c__displayClass83_0`1.<UsingFactoryMethod>b__0(IKernel k,ComponentModel m,CreationContext c)
at Castle.MicroKernel.ComponentActivator.FactoryMethodActivator`1.Instantiate(CreationContext context)
at Castle.MicroKernel.ComponentActivator.DefaultComponentActivator.InternalCreate(CreationContext context)
at Castle.MicroKernel.ComponentActivator.AbstractComponentActivator.Create(CreationContext context,Burden burden)
at Castle.MicroKernel.Lifestyle.AbstractLifestyleManager.CreateInstance(CreationContext context,Boolean trackedExternally)
at Castle.MicroKernel.Lifestyle.SingletonLifestyleManager.Resolve(CreationContext context,IReleasePolicy releasePolicy)
at Castle.MicroKernel.Handlers.DefaultHandler.ResolveCore(CreationContext context,Boolean requiresDecommission,Boolean instancerequired,Burden& burden)
at Castle.MicroKernel.Handlers.DefaultHandler.Resolve(CreationContext context,Boolean instancerequired)
at Castle.MicroKernel.Handlers.AbstractHandler.Resolve(CreationContext context)
at Castle.MicroKernel.Resolvers.DefaultDependencyResolver.ResolveFromKernelByType(CreationContext context,ComponentModel model,DependencyModel dependency)
at Castle.MicroKernel.Resolvers.DefaultDependencyResolver.ResolveFromKernel(CreationContext context,DependencyModel dependency)
at Castle.MicroKernel.Resolvers.DefaultDependencyResolver.ResolveCore(CreationContext context,ISubDependencyResolver contextHandlerResolver,DependencyModel dependency)
at Castle.MicroKernel.Resolvers.DefaultDependencyResolver.Resolve(CreationContext context,DependencyModel dependency)
at Castle.MicroKernel.ComponentActivator.DefaultComponentActivator.Createconstructorarguments(ConstructorCandidate constructor,CreationContext context)
at Castle.MicroKernel.ComponentActivator.DefaultComponentActivator.Instantiate(CreationContext context)
at Castle.MicroKernel.ComponentActivator.DefaultComponentActivator.InternalCreate(CreationContext context)
at Castle.MicroKernel.ComponentActivator.AbstractComponentActivator.Create(CreationContext context,Boolean trackedExternally)
at Castle.MicroKernel.Lifestyle.AbstractLifestyleManager.Resolve(CreationContext context,Boolean instancerequired)
at Castle.MicroKernel.Handlers.AbstractHandler.Resolve(CreationContext context)
at Castle.MicroKernel.DefaultKernel.ResolveComponent(IHandler handler,Type service,Arguments additionalArguments,IReleasePolicy policy,Boolean ignoreParentContext)
at Castle.MicroKernel.DefaultKernel.Castle.MicroKernel.IKernelInternal.Resolve(Type service,Arguments arguments,Boolean ignoreParentContext)
at Castle.MicroKernel.DefaultKernel.Resolve(Type service,Arguments arguments)
at Castle.Windsor.WindsorContainer.Resolve[T]()
at Abp.Dependency.IocManager.Resolve[T]()
at SimpleTaskSystem.Test.SimpleTaskSystemTestBase.UsingDbContext(Action`1 action) in D:\Working\Projects\ASPNETBoilerplate\ASPNETMVC5\SimpleTaskSystem\5.5.0\src\Tests\SimpleTaskSystem.Test\SimpleTaskSystemTestBase.cs:line 53
at SimpleTaskSystem.Test.SimpleTaskSystemTestBase..ctor() in D:\Working\Projects\ASPNETBoilerplate\ASPNETMVC5\SimpleTaskSystem\5.5.0\src\Tests\SimpleTaskSystem.Test\SimpleTaskSystemTestBase.cs:line 25
at SimpleTaskSystem.Test.Tasks.TaskAppService_Tests..ctor() in D:\Working\Projects\ASPNETBoilerplate\ASPNETMVC5\SimpleTaskSystem\5.5.0\src\Tests\SimpleTaskSystem.Test\Tasks\TaskAppService_Tests.cs:line 15
----- Inner Stack Trace -----
at Effort.Provider.EffortProviderConfiguration.RegisterDbConfigurationEventHandler()
at Effort.Provider.EffortProviderConfiguration.RegisterProvider()
at Effort.DbConnectionFactory..cctor()
----- Inner Stack Trace -----
at System.Data.Entity.Infrastructure.DependencyResolution.DbConfigurationManager.AddLoadedHandler(EventHandler`1 handler)
at System.Data.Entity.DbConfiguration.add_Loaded(EventHandler`1 value)
at Effort.Provider.EffortProviderConfiguration.RegisterDbConfigurationEventHandler()
Result Message:
System.TypeInitializationException : The type initializer for 'Effort.DbConnectionFactory' threw an exception.
---- Effort.Exceptions.EffortException : The Effort library Failed to register its provider automatically,so manual registration is required.
a) 在应用程序的入口点调用 Effort.Provider.EffortProviderConfiguration.RegisterProvider() 方法
或
<system.data>
<DbProviderFactories>
<add name="Effort.Provider"
invariant="Effort.Provider"
description="Effort.Provider"
type="Effort.Provider.EffortProviderFactory,Effort" />
</DbProviderFactories>
</system.data>
<entityFramework>
<providers>
<provider invariantName="Effort.Provider"
type="Effort.Provider.EffortProviderServices,Effort" />
</providers>
</entityFramework>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。