2011-12-28 4 views
2

アサートに失敗した場合に "UnBookFlightが適切なパラメータで呼び出されなかったか、呼び出されなかった"と表示されるように、次のアサートをmockオブジェクトに書き込むことはできますか?Rhino MockでAssertWasCalledが失敗したときに、わかりやすいメッセージを表示するように設定できますか?

mockBookingService 
       .AssertWasCalled(ms=>ms.UnBookFlight(Arg<DateTime>.Is.Equal(dummyDate))); 

答えて

3

this articleによると、あなたはAssertWasCalled()に渡す方法のオプションでメッセージを指定することができます。

mockBookingService.AssertWasCalled(
    ms => ms.UnBookFlight(Arg<DateTime>.Is.Equal(dummyDate)), 
    options => { 
     options.Message("UnBookFlight was not called with proper parameters or not even called"); 
    }); 
+0

構文について確認してください。オプション=>の行は、正確に何の後に始まりますか? – pencilCake

+0

@pencilCake、申し訳ありませんが、カンマを忘れました。回答は修正されました。ヘッドアップのおかげで:) –

+0

ありがとう!私はSetupConstraintの可能性を認識していませんでした。一方、アサーションステージで戻り値を設定する機能は、私には少し奇妙に見えます。私は、APIダイエットについて興味があり、今後のバージョン4.0でAyendeが書きました。 – pencilCake

0

Rhinoには自分のメッセージを指定する方法がありません。

RhinoのExpectationViolationExceptionをキャッチし、必要なメッセージを出力する独自のメソッドを記述することができます。

本のラフな例は次のようになります。

public static class RhinoExtensions 
{ 
    public static void AssertWasCalledWithMessage<T>(this T mock, Expression<Func<T, object>> action) 
    { 
     try 
     { 
      mock.AssertWasCalled(action.Compile()); 
     } 
     catch (ExpectationViolationException) 
     { 
      Console.WriteLine(string.Format("{0} was not called with proper parameters or was not called.", (action.Body as MethodCallExpression).Method.Name)); 
      throw; 
     } 
    } 
} 

使用量は次のようになります。

mockBookingService.AssertWasCalledWithMessage(ms=>ms.UnBookFlight(Arg<DateTime>.Is.Equal(dummyDate))); 
関連する問題