0

RhinoMocksを使用した部分的なモックに問題があります。

var authentication = (FormsAuthenticationService)_mocks.PartialMock(
  typeof(FormsAuthenticationService));
Expect.Call( delegate{ authentication.SetAuthCookie(null, null); }).IgnoreArguments();

..そして「Expect」でNullReferenceExceptionが発生します。ライン..

FormsAuthenticationService実装するものを追加しますIAuthentication

4

1 に答える 1

1

インターフェイスではなく、物理クラスをモックしようとしている正当な理由はありますか? FormsAuthenticationService のモックには 2 つの潜在的な問題があるため、これを尋ねます。

  1. クラスにデフォルトのパラメーターなしのコンストラクターがない場合があります (その場合、mocks.PartialMock のオーバーロードされたメソッドを指定する必要があります)。

  2. SetAuthCookie は仮想でなければなりません。通常、モック フレームワークは、シールされていないクラスのみ、およびそのようなクラスの仮想メンバーのみをモックできます。

これらの問題を回避するには、代わりに IAuthentication をモックすることをお勧めします。モック インターフェイスには、これらの制限はありません。書くコードは次のとおりです。

var authentication = _mocks.DynamicMock<IAuthentication>();
Expect.Call(() => authentication.SetAuthCookie(null, null)).IgnoreArguments();
于 2008-11-19T15:11:23.943 に答える