2009-05-31 5 views
16

に密封されたクラスを返すメソッドをモック:このコードを実行するRhinoMocks

public interface IBar 
{ 
    string Foo(); 
} 

public class Bar : IBar 
{ 
    public string Foo() 
    { 
     throw new NotImplementedException(); 
    } 
} 

はNotSupportedExceptionをスロー

_foo = MockRepository.GenerateStub<IBar>(); 
_foo.Stub(x => x.Foo()).Return("sdf"); 

- "密閉されたクラスのモックを作成することはできません"。私は密閉されたクラスを模倣できない理由を理解していますが(TypeMockには解決策がありますが)、封印されたクラス(文字列)を返すクラスを嘲笑するのはどうですか?

+0

F5を行います。私はあなたに別の問題があると思う。より多くのコードを表示できますか? – tvanfosson

+0

問題は何だったのか分かりません。 – ripper234

+2

デバッグしようとすると同じ問題が発生します。デバッグなしで実行すると正常に動作します。 –

答えて

23

Rhino Mockがこの例外をキャッチして処理しているようです。ブレークポイントとして例外を有効にしている場合は、VS.NETデバッガでのみ表示されます。この例外ブレークポイントを過ぎても安全に実行でき、すべて正常に動作するようです。

+0

「続行」を押すとそのトリックが行われます。 – DanielV

1

コードが正しく動作します。問題を引き起こしている他のコードが表示されている可能性があります。ここで単体テストを投稿すると、問題が診断されます。

1

私は同じ問題を抱えていますが、それはいくつかのVSスタジオのデバッグ設定またはいくつかのアクセス権が不足していると思われます。 私はそれがこの原因であるコードではないと確信しています。

2

これは、[ツール] - > [オプション] - > [デバッグ] - > [一般]で[自分のコードだけ]を有効にしていないときに発生し、CLR例外があり、[デバッグ] - > [例外]それを修正する最も簡単な方法は、ツール - >オプション - >デバッグ - >一般の下で "自分のコード"を有効にすることです。

enter image description here

0

私は2番目のもの - それはコードの問題ではありません。 VSデバッグ設定です。

Arg.Is.Anythingをパラメータとしてスタブに送信しようとしているときに、以下のコードでデバッグしているときに同じ例外が発生します。

mockPermissionManager.Stub(item => item.HasAccess(Arg<string>.Is.Anything)).Return(true); 

例外が処理し、期待通りのコード/あざける作品は、ただこれは、文字列を返すメソッドを持っているIしばしばモックインターフェイスとして動作するはず

関連する問題