gpt4 book ai didi

c# - Autofac 在注册 Moq 实例时抛出 File Not Found 异常

转载 作者:太空宇宙 更新时间:2023-11-03 10:36:26 24 4
gpt4 key购买 nike

我创建了一个 Windows 8.1 App Store 单元测试项目,添加了 Moq 和 Autofac 并尝试注册一个 Mock<IAccountService>与Autofac。当我调用 RegisterInstance(serviceMock.Object)它 Autofac 抛出 File Not Found异常

界面是这样的:

public interface IAccountService
{
Task<OperationResult> CreateAccount(User user, string password, string passwordConfirmation);

Task<OperationResult<User>> Signin(string username, string password);
}

我设置了我的 Mock

// Set up our mocked repositories and services
var accountServiceMock = new Mock<IAccountService>();
accountServiceMock
.Setup(service => service.CreateAccount(
It.IsAny<User>(),
It.IsAny<string>(),
It.IsAny<string>()))
.Returns((User user, string password, string passwordConfirmation) =>
{
var taskCompletion = new TaskCompletionSource<OperationResult>();
taskCompletion.SetResult(new OperationResult(true));
return taskCompletion.Task;
});

accountServiceMock
.Setup(service => service.Signin(It.IsAny<string>(), It.IsAny<string>()))
.Returns((string username, string password) =>
{
var taskCompletion = new TaskCompletionSource<OperationResult<User>>();
taskCompletion.SetResult(
new OperationResult<User>(true, new User { Username = username }));

return taskCompletion.Task;
});

当我用 Autofac 注册模拟时,抛出异常

var builder = new ContainerBuilder();

// Exception thrown here.
builder.RegisterInstance(accountServiceMock.Object).As<IAccountService>();
IContainer container = builder.Build();

如果我使用这段代码并围绕它构建一个标准的非 App Store 单元测试项目,单元测试运行没有问题并且构建器注册了模拟实例。

我还想指出我可以使用 RegisterType().As();没有任何问题。我也可以使用 RegisterInstance使用一个具体的、非模拟的对象,没有任何异常(exception)。

我在 Windows 8.1 项目中缺少什么吗?

异常

[System.IO.FileNotFoundException]   
{"Could not load file or assembly 'ISymWrapper, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies.
The system cannot find the file specified.":"ISymWrapper, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"}

堆栈跟踪

 at System.Reflection.RuntimeAssembly._nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks)\r\n
at System.Reflection.RuntimeAssembly.nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks)\r\n
at System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(AssemblyName assemblyRef, Evidence assemblySecurity, RuntimeAssembly reqAssembly, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks)\r\n
at System.Reflection.RuntimeAssembly.InternalLoad(String assemblyString, Evidence assemblySecurity, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean forIntrospection)\r\n at System.Reflection.RuntimeAssembly.InternalLoad(String assemblyString, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection)\r\n
at System.Reflection.Assembly.Load(String assemblyString)\r\n
at System.Reflection.Emit.AssemblyBuilder.LoadISymWrapper()\r\n
at System.Reflection.Emit.AssemblyBuilder.DefineDynamicModuleInternalNoLock(String name, Boolean emitSymbolInfo, StackCrawlMark& stackMark)\r\n
at System.Reflection.Emit.AssemblyBuilder.DefineDynamicModuleInternal(String name, Boolean emitSymbolInfo, StackCrawlMark& stackMark)\r\n
at System.Reflection.Emit.AssemblyBuilder.DefineDynamicModule(String name, Boolean emitSymbolInfo)\r\n
at Castle.DynamicProxy.ModuleScope.CreateModule(Boolean signStrongName)\r\n
at Castle.DynamicProxy.ModuleScope.ObtainDynamicModuleWithWeakName()\r\n
at Castle.DynamicProxy.ModuleScope.ObtainDynamicModule(Boolean isStrongNamed)\r\n
at Castle.DynamicProxy.Generators.Emitters.ClassEmitter.CreateTypeBuilder(ModuleScope modulescope, String name, Type baseType, Type[] interfaces, TypeAttributes flags, Boolean forceUnsigned)\r\n
at Castle.DynamicProxy.Generators.Emitters.ClassEmitter..ctor(ModuleScope modulescope, String name, Type baseType, Type[] interfaces, TypeAttributes flags, Boolean forceUnsigned)\r\n
at Castle.DynamicProxy.Generators.Emitters.ClassEmitter..ctor(ModuleScope modulescope, String name, Type baseType, Type[] interfaces, TypeAttributes flags)\r\n
at Castle.DynamicProxy.Generators.Emitters.ClassEmitter..ctor(ModuleScope modulescope, String name, Type baseType, Type[] interfaces)\r\n
at Castle.DynamicProxy.Generators.BaseProxyGenerator.BuildClassEmitter(String typeName, Type parentType, Type[] interfaces)\r\n
at Castle.DynamicProxy.Generators.BaseProxyGenerator.BuildClassEmitter(String typeName, Type parentType, IList interfaceList)\r\n
at Castle.DynamicProxy.Generators.InterfaceProxyWithTargetGenerator.GenerateCode(Type proxyTargetType, Type[] interfaces, ProxyGenerationOptions options)\r\n
at Castle.DynamicProxy.DefaultProxyBuilder.CreateInterfaceProxyTypeWithoutTarget(Type interfaceToProxy, Type[] additionalInterfacesToProxy, ProxyGenerationOptions options)\r\n
at Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyTypeWithoutTarget(Type interfaceToProxy, Type[] additionalInterfacesToProxy, ProxyGenerationOptions options)\r\n
at Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithoutTarget(Type interfaceToProxy, Type[] additionalInterfacesToProxy, ProxyGenerationOptions options, IInterceptor[] interceptors)\r\n
at Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithoutTarget(Type interfaceToProxy, Type[] additionalInterfacesToProxy, IInterceptor[] interceptors)\r\n
at Moq.Mock`1.<InitializeInstance>b__0()\r\n
at Moq.PexProtector.Invoke(Action action)\r\n
at Moq.Mock`1.InitializeInstance()\r\n
at Moq.Mock`1.get_Object()\r\n
at Mobile.Windows.Shared.Tests.Bootstrapper.Setup()

最佳答案

我刚刚发布了另一个可能对您有帮助的问题的答案。它将为您提供一个指向替代模拟框架的链接,该框架可以轻松地与 Windows 应用商店应用程序一起使用。

我目前将它与 Unity 一起用作 DI 容器和 Prism。

Telerik JustMock answer

关于c# - Autofac 在注册 Moq 实例时抛出 File Not Found 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27576495/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com