にNULL値を返すためにJmockとのモックを作成する私は、次のようになります方法があります。自体
public void myMethod(MyClass c)
{
if (c == null)
{
return;
}
try
{
c.someMethod();
}
catch (SomeException e)
{
// log the exception, possibly re-throw
}
}
を私はMyClassのパラメータのモックインスタンスを設定する方法を見つけようとしていますc自身のためにnullの値を返し、c.someMethod()が呼び出されないようにします。私のユニットテストは、次のようになります。
@Test
public void Test_myMethod_With_Null_MyClass_Does_Not_Call_someMethod()
{
Mockery mockery = new Mockery()
{{
setImposteriser(ClassImposteriser.INSTANCE);
}};
final MyClass mockMyClass = mockery.mock(MyClass.class);
try
{
mockery.checking(new Expectations()
{{
oneOf(mockMyClass).equals(null);
will(returnValue(true));
never(mockMyClass).someMethod();
}});
}
catch (Exception e)
{
logger.fatal(e);
fail("Exception thrown in test.");
}
Util.myMethod(mockMyClass);
}
は基本的に、私は、MyClassののモックインスタンスを設定し、その値はNULL値に対してテストされたとき、それはtrueを返しますということで期待を設定していて、メソッドsomeMethod()が呼び出されないことを示します。
jMockはObjectクラス(equals(null)パーツ)によって提供されるメソッドをオーバーライドすることはできないと言っているので、テストは失敗しています。
jMockでこれを行う方法はありますか?このパターンは理にかなっていますか?これは有効なテストですか?そうでない場合は、誰にもこれをテストする方法に関する提案はありますか?
これは実際にはこれをテストする唯一の方法だと思います。つまり、nullを渡すことです。実際にそれを行う方法があるかどうかを確認するだけです。乾杯! – matt