@TargetSE(valueSE={TYPESE,FIELDSE}) @RetentionSE(valueSE=RUNTIMESE) @DocumentedSE @RepeatableSE(valueSE=MockBeans.class) public @interface MockBean
ApplicationContext に追加するために使用できるアノテーション。クラスレベルのアノテーションとして、または @Configuration クラスのフィールド、または @RunWith SpringRunner のテストクラスで使用できます。 モックは、型または bean name によって登録できます。コンテキストで定義されている同じ型の既存の単一 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 アノテーション内に含まれる場合、複数回指定できます。
MockitoPostProcessorpublic abstract StringSE name
@AliasFor(value="classes") public abstract ClassSE<?>[] value
@AliasFor(value="value") public abstract ClassSE<?>[] classes
@MockBean が name も定義する場合、この属性には単一の値のみを含めることができます。
これが唯一の指定された属性である場合、代わりに value エイリアスの使用を検討してください。
public abstract ClassSE<?>[] extraInterfaces
MockSettings.extraInterfaces(Class...) を参照してください。public abstract org.mockito.Answers answer
Answers 型。public abstract boolean serializable
MockSettings.serializable() を参照してください。public abstract MockReset reset
MockReset.AFTER です。これは、各テストメソッドが呼び出された後にモックが自動的にリセットされることを意味します。Copyright © 2019 Pivotal Software, Inc.. All rights reserved.