2009-08-12 21 views
1

私はプロセス例外をテストするためにちょうどMethod1をモックする必要があります。私はそれをどのようにすることができますか?方法だけを模擬する方法は?

public interface IFoo 
{ 
    void Method1(); 
    object Method2(); 
} 
public class Foo : IFoo 
{ 
    public void Method1() 
    { 
     // Do something 
    } 

    public object Method2() 
    { 
     try 
     { 
      // Do something 
      Method1(); 
      // Do somenthing 

      return new object(); 
     } 
     catch (Exception ex) 
     { 
      // Process ex 
      return null; 
     } 
    } 
} 
+0

あなたばかりだ」してみてくださいメソッド、あなたは単なる歌声のメソッドでしかありません;-) –

+0

Method2()をテスト中にMethod1()を嘲笑してはいけません。これは、あなたがmockオブジェクトをテストしていることを意味します。おそらく1つのクラスと部屋でそれを分解するにはあまりにも多くのことが起こっている。 (通常これらのタイプのケースで) –

答えて

4
fooMock = MockRepository.GenerateStub<IFoo>(); 
fooMock.Stub(x => x.Method1()).Return("Whatever"); 
+0

それは私の問題を解決しませんが、私に光を与えます。ありがとうございました! – Zote

0

インターフェースは赤ニシンです。あなたは、実装はFooを模擬し、仮想するメソッド1を変更する必要があります:

... 
public virtual void Method1() 
... 

あなたが扱うしたい例外を作成するためにスロー拡張子を使用します。

var fooMock = MockRepository.GenerateStub<Foo>(); 
fooMock.Expect(foo => foo.Method1()).Throw(new Exception()); 

var actual = fooMock.Method2(); 
Assert.IsNull(actual); 

fooMock.VerifyAllExpectations(); 
+0

私はあなたがインターフェイスをスタブすることしかできないと思う...(しかし私は間違っている可能性があります) – Martin

関連する問題