2017-01-05 1 views
0

私はRhino Mockを使って厳密な模擬を設定しています。特定の条件下では、これらのモックのいずれに対してもメソッド呼び出しを実行できません。これは、厳密なモックのexpectationexceptionがキャッチされますMy RhinoモックStrict Mockの予想例外が実行中のメソッドで捕捉されています。の解き方?

public void DoSomething() 
{ 
    try { 
     m_Class.Something(); 
    } 
    catch { 
    } 
} 

// Arrange 
var myMock = MockRepository.GenerateStrictMock<IMyClass>(); 
var sut = new SUT(myMock); 

// Act 
sut.DoSomething(); 

今、doSomethingのはのtry-catch内のすべてをラップします。私のテストは合格ではありません。

私は、myMock.VerifyAllExpectations();を呼び出すとテストに失敗することを期待しましたが、どちらの場合もそうではありません。

この結果はどのように達成できますか?

答えて

1

例外を奪うcatchブロックを持つことは、一般的には悪いことです。あなたはそれを変更することができない場合は、しかし、あなたが使用することができ、より明示的にはこのように、.AssertWasCalled().AssertWasNotCalled()を使用してメンバーにアサートん:

myMock.AssertWasNotCalled(x => x.Something())

しかし、それはすべての可能性のためのアサーションを設定する必要になります何も呼び出されていないことを確認したい場合は、インターフェイスメンバを使用してください。これは、面倒で将来のメンバーが見逃される傾向があります。

残念ながら、アサーションの例外を使用することは、RhinoMocks(およびNUnit、Moq、NS substituteなどのほとんどのユニットテストフレームワーク)の基本原理です。したがって、テストフレームワークに伝播する前にこれらの例外をキャッチすることは一般的に問題になります。

+0

私はこの質問を提起する前に、試しにキャッチしてクラスから外しました。同僚はその動きに同意しませんでした。私は、その動きが私だけよりも多くの人にとって理にかなっていることを確信しています。 – Diana

関連する問題