Rok*_* Ge 6 strongname exception moq httpcontext 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;
Run Code Online (Sandbox Code Playgroud)
单元测试在最后一个语句中失败
抛出异常:System.ArgumentException:无法获取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 rejectedPermissions,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
我是正确地认为,因为HttpContextBase是的一部分System.Web.Abstraction,这是一个签名的程序集.Moq实际上会尝试签署动态组件,但失败了吗?
小智 10
MoQ使用Castle DynamicProxy在运行时生成模拟.Rhino Mocks使用相同的库来实现相同的目的.如果你在这里查看:
http://ayende.com/Blog/archive/2006/06/09/UnableToObtainPublicKeyForStrongNameKeyPair.aspx
你会发现问题是机器密钥库的权限之一.无论运行哪个用户帐户,测试都必须具有在商店中创建和删除密钥的权限.
您可以在此处找到有关此问题的更多详细信息:http: //groups.google.co.uk/group/RhinoMocks/browse_thread/thread/26df68ff01567509/5ddebf407228edc4
| 归档时间: |
|
| 查看次数: |
3555 次 |
| 最近记录: |