アノテーションインターフェース MockBean
@TargetSE({TYPESE,FIELDSE})
@RetentionSE(RUNTIMESE)
@DocumentedSE
@RepeatableSE(MockBeans.class)
public @interface MockBean
モックを Spring
ApplicationContext
に追加するために使用できるアノテーション。クラスレベルのアノテーションとして、または @Configuration
クラスのフィールド、または @RunWith
SpringRunner
のテストクラスで使用できます。 モックは、型または bean name
で登録できます。型別に登録すると、コンテキスト内の一致する型(サブクラスを含む)の既存の単一の Bean がモックに置き換えられます。名前で登録すると、既存の Bean をモックによる交換の対象にすることができます。いずれの場合も、既存の Bean が定義されていない場合は、新しい Bean が追加されます。アプリケーションコンテキストには認識されているが Bean ではない依存関係(registered directly
など)は検出されず、モックされた Bean が既存の依存関係とともにコンテキストに追加されます。
@MockBean
がフィールドで使用され、アプリケーションコンテキストに登録されると、モックもフィールドに挿入されます。典型的な使用箇所は次のとおりです。
@RunWith(SpringRunner.class) public class ExampleTests { @MockBean private ExampleService service; @Autowired private UserOfService userOfService; @Test public void testUserOfService() { given(this.service.greet()).willReturn("Hello"); String actual = this.userOfService.makeUse(); assertEquals("Was: Hello", actual); } @Configuration @Import(UserOfService.class) // A @Component injected with ExampleService static class Config { } }リクエストされた型の Bean が複数ある場合、フィールドレベルで修飾子メタデータを指定する必要があります。
@RunWith(SpringRunner.class) public class ExampleTests { @MockBean @Qualifier("example") private ExampleService service; ... }
このアノテーションは @Repeatable
であり、Java 8 で作業する場合、または @MockBeans
アノテーション内に含まれる場合、複数回指定できます。
- 導入:
- 1.4.0
- 作成者:
- Phillip Webb
- 関連事項:
オプション要素のサマリー
オプション要素
要素の詳細
name
StringSE name登録または置換する Bean の名前。指定しない場合、名前が生成されるか、モックが既存の Bean を置き換える場合、既存の名前が使用されます。- 戻り値:
- Bean の名前
- デフォルト:
- ""
value
- 戻り値:
- モックするクラス
- デフォルト:
- {}
classes
モックするクラス。ここで指定された各クラスにより、モックが作成され、アプリケーションコンテキストに登録されます。アノテーションがフィールドで使用される場合、クラスは省略できます。@MockBean
がname
も定義する場合、この属性には単一の値のみを含めることができます。これが唯一の指定された属性である場合、代わりに
value
エイリアスの使用を検討してください。- 戻り値:
- モックするクラス
- デフォルト:
- {}
extraInterfaces
ClassSE<?>[] extraInterfacesモックで宣言する必要がある追加のインターフェース。詳細については、MockSettings.extraInterfaces(Class...)
を参照してください。- 戻り値:
- 追加のインターフェース
- デフォルト:
- {}
answer
org.mockito.Answers answerモックで使用するAnswers
型。- 戻り値:
- 回答型
- デフォルト:
- RETURNS_DEFAULTS
serializable
boolean serializable生成されたモックが直列化可能な場合。詳細については、MockSettings.serializable()
を参照してください。- 戻り値:
- モックが直列化可能な場合
- デフォルト:
- false
reset
MockReset resetモック Bean に適用するリセットモード。デフォルトはMockReset.AFTER
です。これは、各テストメソッドが呼び出された後にモックが自動的にリセットされることを意味します。- 戻り値:
- リセットモード
- デフォルト:
- AFTER