微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 Effort 的假 DbConnection 有问题

如何解决使用 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() 方法

b) 在 App.config 文件添加以下配置:

   <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 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?