2012-01-06 16 views
1

戻り値の型がインターフェイスであるときに、明示的に戻り値を指定しないでん場合、なぜRhinoのモック(V3.6)は、プロキシタイプを生成しない(私はあなたが常にリターンを指定する必要があります知っているが、thatsの異なります問題)?Rhino Mockのデフォルトの戻り値の型は?

多くのWeb記事、さらには投稿記事RhinoMock : Mocks Vs StrictMocks Vs DynamicMocksでも、結果としてデフォルトの型が返されるとしたら、私はdefault(T)と仮定します。私はこの行動を見ていない(下記参照)。行動を指定するものはどれもRhino Mocks Documentationで見つからない。

また、戻り値の型として整数型とクラスを使ってテストしましたが、これらの両方のテストで例外がスローされます"返す値またはスローする例外が必要です"私の行動コードでメソッドを呼び出す。これは私が気にしていない、明白な何が間違っている、そしてRhino does not 'は創造的になる、それは不変のimoです。

// Arrange 
IFoo strictMockInstance = MockRepository.GenerateStrictMock<IFoo>(); 
IFoo dynamicMockInstance = MockRepository.GenerateMock<IFoo>(); 

strictMockInstance.Expect(call => call.Bar()); 
strictMockInstance.Replay(); 

dynamicMockInstance.Expect(call => call.Bar()); 
dynamicMockInstance.Replay(); 

// Act 
IResult smResult = strictMockInstance.Bar(); 
IResult dmResult = dynamicMockInstance.Bar(); 

// Assert  
Assert.IsNull(smResult); // none of these results are null, both are proxy instances 
Assert.IsNull(dmResult); 

// .... 
public interface IFoo 
{ 
    IResult Bar(); 
} 

public interface IResult { } 
+0

Offtopic、 '期待()/コール()'、あなたがソースコードのコメントに言及したAAAのsyntaxtではありません( 'AssertWasCalledを使用)を防止するためにその場で1を作成します。 'メソッド – sll

答えて

0

この機能の背後にある主な理由は、サポート(またはハンドル)することである

は、次の点を考慮した階層:

var mock = MockRepository.GenerateMock<ISomeInterface>(); 
mock.Expect(x => x.Document.Header.CreateRow()); 

Rhinoのモックが、それは意志のインターフェースである戻り値の型に遭遇するとモックがすでに作成されているかどうかを確認してください。それが見つからない場合はnull例外