web-dev-qa-db-ja.com

オブジェクトがMockitoモックかどうかを確認するにはどうすればよいですか?

特定のオブジェクトがMockitoモックであるかどうかをコードで伝えることは可能ですか?

これを行いたいのは、モックが使用されているときに別のエラーメッセージを返すためです。これは、他の開発者に、モックを自分で作成するのではなく、便利な方法で呼び出しに応答するようにすでに設定されている事前に準備されたモックを使用するように提案するために使用されます。

現時点では、object.getClass().getName().contains("EnhancerByMockitoWithCGLIB")が一番ですが、これはハッキーな感じです。

62
mikej

そのようなAPIがないように見えます(問題を提起してください、そうする必要があります!)幸い(下記のコメントに従って)_org.mockito.internal.util_パッケージにメソッドがあります。

_import org.mockito.internal.util.MockUtil;

new MockUtil().isMock(obj)
_

今後、Mockito.isMock()メソッドがパブリックAPIに追加される可能性があります。次を参照してください 問題313:org.mockito.internalの外部にisMockを提供)

59

補足として、MockitoパブリックAPIには次のメソッドがあります。

MockingDetails org.mockito.Mockito.mockingDetails(Object toInspect)

@David Wallaceが提起した問題の結果です。返されたオブジェクトは、メソッド「isMock()」と「isSpy()」をサポートし、後でモック関連情報を提供するように拡張される場合があります。

44
Spina