6

ユニットテスト用のモック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;

ユニットテストは、最後のステートメントで失敗します。

例外をスローしました:System.ArgumentException:StrongNameKeyPairの公開鍵を取得できません。

System.Reflection.StrongNameKeyPair.nGetPublicKey(ブール値エクスポート、Byte []配列、文字列コンテナー)System.Reflection.StrongNameKeyPair.get_PublicKey()System.AppDomain.InternalDefineDynamicAssembly(AssemblyName name、AssemblyBuilderAccessアクセス、文字列ディレクトリ、証拠の証拠、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.Dynamic .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.AbstractionMoqは実際に動的アセンブリに署名しようとしますが、失敗しますか?

4

3 に答える 3

10

MoQは、実行時にモックを生成するためにCastleDynamicProxyを使用します。Rhino Mocksは、同じ目的で同じライブラリを使用します。ここをチェックすると:

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

問題は、マシンキーストアへのアクセス許可の1つであることがわかります。テストを実行しているユーザーアカウントには、ストアでキーを作成および削除する権限が必要です。

この問題の詳細については、http: //groups.google.co.uk/group/RhinoMocks/browse_thread/thread/26df68ff01567509/5ddebf407228edc4をご覧ください。

于 2010-03-11T14:37:58.027 に答える
0

スコット・ハンゼルマンによるこのブログ投稿をチェックしてください-それは少し古いですが、彼がそこに表示するMvcMockHelpersは、おそらくあなたがしていることを達成する方法の良いアイデアをあなたに与えるでしょう。

于 2010-03-11T14:30:54.353 に答える
-1

実装のすばらしい例を示しているasp.netサイトでこのビデオを見る必要があります。

于 2010-03-11T14:31:32.380 に答える