私は静的メソッドを持っています。これは複数の場所で使用され、主に静的初期化ブロックで使用されます。Class オブジェクトをパラメーターとして取り、クラスのインスタンスを返します。特定の Class オブジェクトがパラメーターとして使用されている場合にのみ、この静的メソッドをモックしたい。ただし、別の場所から別の Class オブジェクトを使用してメソッドが呼び出されると、null が返されます。
モックされたもの以外のパラメーターの場合、静的メソッドに実際の実装を実行させるにはどうすればよいですか?
class ABC{
void someMethod(){
Node impl = ServiceFactory.getImpl(Node.class); //need to mock this call
impl.xyz();
}
}
class SomeOtherClass{
static Line impl = ServiceFactory.getImpl(Line.class); //the mock code below returns null here
}
class TestABC{
@Mocked ServiceFactory fact;
@Test
public void testSomeMethod(){
new NonStrictExpectations(){
ServiceFactory.getImpl(Node.class);
returns(new NodeImpl());
}
}
}