exception - 尝试使用 MoQ 时的 StrongNameKeyPair 问题

标签 exception moq httpcontext strongname argumentexception

我正在尝试为单元测试创​​建一个模拟 HttpContextBase。

var fakePrinciple = new GenericPrincipal(
           new GenericIdentity(userId), 
           rolesList.ToArray());            
var mockHttpContext = new Mock<HttpContextBase>();
mockHttpContext.Setup(t => t.User).Returns(fakePrinciple);
HttpContextBase mockedContext = mockHttpContext.Object;

单元测试在最后一条语句失败

threw exception: System.ArgumentException: Unable to obtain public key for StrongNameKeyPair..

System.Reflection.StrongNameKeyPair.nGetPublicKey(Boolean exported, Byte[] array, String container) System.Reflection.StrongNameKeyPair.get_PublicKey() System.AppDomain.InternalDefineDynamicAssembly(AssemblyName name, AssemblyBuilderAccess access, String dir, Evidence evidence, PermissionSet requiredPermissions, PermissionSet optionalPermissions, PermissionSet refusedPermissions, StackCrawlMark& stackMark, IEnumerable`1 unsafeAssemblyAttributes) System.AppDomain.DefineDynamicAssembly(AssemblyName name, AssemblyBuilderAccess access) Castle.DynamicProxy.ModuleScope.CreateModule(Boolean signStrongName) Castle.DynamicProxy.ModuleScope.ObtainDynamicModuleWithStrongName() Castle.DynamicProxy.ModuleScope.ObtainDynamicModule(Boolean isStrongNamed) Castle.DynamicProxy.Generators.Emitters.ClassEmitter.CreateTypeBuilder(ModuleScope modulescope, String name, Type (blah blah snip)



我用谷歌搜索,这里的建议似乎不起作用(更改 RSA 文件夹安全设置等)http://groups.google.com.br/group/castle-project-users/browse_thread/thread/85685cf32a795158

我认为这是正确的,因为 HttpContextBaseSystem.Web.Abstraction 的一部分,这是一个签名的程序集。 Moq 实际上会尝试签署动态程序集,但会失败?

最佳答案

MoQ 使用 CaSTLe DynamicProxy 在运行时生成模拟。 Rhino Mocks 使用相同的库来实现相同的目的。如果你在这里检查:

http://ayende.com/Blog/archive/2006/06/09/UnableToObtainPublicKeyForStrongNameKeyPair.aspx

您会看到问题是对机器 key 存储的权限之一。无论运行测试的用户帐户是什么,都必须具有在商店中创建和删除 key 的权限。

您可以在此处找到有关此问题的更多详细信息:
http://groups.google.co.uk/group/RhinoMocks/browse_thread/thread/26df68ff01567509/5ddebf407228edc4

关于exception - 尝试使用 MoQ 时的 StrongNameKeyPair 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2425667/

相关文章:

exception - 忽略 Twig 模板中的异常

testing - 默认情况下将 Moq CallBase 设置为 true

c# - 使用 aspnetcore 2.2 联合 Azure AD 登录后,User.Identity.Name 为空

c# - MVC 6 中的 GetOwinContext

c# - 使用 HttpContext OutputStream 写入 ZipArchive

java - hibernate3中索引越界异常

c# - 抛出异常时是否应该省略 else 语句?

c# - 在 Windows Phone 应用程序中使用任务并行库会引发 ThreadAbortException

c# - 使用 Moq 测试多线程情况会抛出奇怪的错误

c# - 最小起订量工作单位