3

EasyMock モックが再生モードにあるかどうかを判断することは可能ですか?

何かのようなもの:

if (EasyMock.isReplayed(mock))
  // do something
4

1 に答える 1

4

モックの を確認するには、モックのプロキシを解除し、そのモックに設定されている状態を確認するstate必要があります。1 つの状態は. EasyMock は Java プロキシで動作するため、これは非常に簡単です。ReplayState

EasyMock.replay(mock); // setting replay state to a mock object

// stripping proxy and getting the invocation handler
InvocationHandler invocationHandler = Proxy.getInvocationHandler(mock); 


// for easyMock, invocation handler holds the state of the mock 
ObjectMethodsFilter objectMethodsFilter = (ObjectMethodsFilter) invocationHandler; 

// not the not so elegant part:
// this: objectMethodsFilter.getDelegate().getControl().getState() 
// retrieves  the state instance that can be checked if it is an 
// instance of ReplayState.class
boolean inReplayState = objectMethodsFilter.getDelegate()
    .getControl().getState() instanceof ReplayState;

以上です!trueすでにに設定されているため、これは印刷されますReplay

バージョン 3.1 の場合は、次のように使用できます。

ClassExtensionHelper.getControl(mock).getState() instanceof ReplayState

ClassExtensionHelper.getControl()javadoc

于 2012-06-29T19:18:41.500 に答える