我想爲單元測試創建一個模擬HttpContextBase。StrongNameKeyPair問題當試圖使用MoQ
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;
單元測試在與
的最後一條語句失敗扔了異常: System.ArgumentException:無法 獲得公共密鑰 StrongNameKeyPair ..
System.Reflection.StrongNameKeyPair .nGetPublicKey(布爾型 導出,字節[]數組,字符串 容器) System.Reflection.StrongNameKeyPair.get_PublicKey() System.AppDomain.InternalDefineDynamicAssembly(的AssemblyName 名,AssemblyBuilderAccess訪問, 字符串目錄,證據證據, 的PermissionSet requiredPermissions, 的PermissionSet optionalPermissions, 的PermissionSet refusedPermissions, StackCrawlMark & stackMark, IEnumerable`1 unsafeAssemblyAttributes) System.AppDomain。 DefineDynamicAssembly(的AssemblyName 名,AssemblyBuilderAccess訪問) Castle.DynamicProxy.ModuleScope.CreateModule(布爾 signStrongName) Castle.DynamicProxy.ModuleScope.ObtainDynamicModuleWithStrongNam E() Castle.DynamicProxy.ModuleScope.ObtainDynamicModule(布爾 isStrongNamed) Castle.DynamicProxy.Generators.Emitters.ClassEmitter.CreateTypeBuilder(ModuleScope modulescope,字符串名稱,類型 (等等等等SNIP)
我一派,這裏的建議似乎不工作(其他城市RSA文件夾的安全設置等)http://groups.google.com.br/group/castle-project-users/browse_thread/thread/85685cf32a795158
我是正確地認爲,因爲HttpContextBase
是System.Web.Abstraction
一部分,這是一個簽名的程序集。 Moq實際上會嘗試簽署動態程序集,並失敗?
FWIW,我已經使用起訂量來模擬HttpContextBase很多次,從來沒有這個問題。無論你的問題是什麼,Moq和HttpContextBase的組合並不是一般的。 – 2010-03-11 14:32:16
訣竅是需要在MachineKeys文件夾而不是RSA上設置權限。如果你不是讀者,那麼Ayende的這篇文章並沒有讓這一點變得完全明顯。 – 2011-07-21 10:52:51
很高興我找到了這個,呃,兩天,終於修好了:D。只是想添加一些幫助我的參考資料,以防其他人遇到這種情況: http://ansaurus.com/question/3154345-strong-name-keys-on-windows-7 | http://msdn.microsoft.com/en-us/library/bb909654(v=vs.90).aspx 確實幫助我解決了爲我工作的問題。 – 2014-04-09 21:28:02