注释类型 SpyBean
@Target({TYPE,FIELD}) @Retention(RUNTIME) @Documented @Repeatable(SpyBeans.class) public @interface SpyBean
Annotation that can be used to apply Mockito spies to a SpringApplicationContext. Can be used as a class level annotation or on fields in either@Configurationclasses, or test classes that are@RunWiththeSpringRunner.Spies can be applied by type or by
bean name. All beans in the context of the same type will be wrapped with the spy. If no existing bean is defined a new one will be added. Dependencies that are known to the application context but are not beans (such as thoseregistered directly) will not be found and a spied bean will be added to the context alongside the existing dependency.When
@SpyBeanis used on a field, as well as being registered in the application context, the spy will also be injected into the field. Typical usage might be:@RunWith(SpringRunner.class) public class ExampleTests { @SpyBean private ExampleService service; @Autowired private UserOfService userOfService; @Test public void testUserOfService() { String actual = this.userOfService.makeUse(); assertEquals("Was: Hello", actual); verify(this.service).greet(); } @Configuration @Import(UserOfService.class) // A @Component injected with ExampleService static class Config { } }If there is more than one bean of the requested type, qualifier metadata must be specified at field level:@RunWith(SpringRunner.class) public class ExampleTests { @SpyBean @Qualifier("example") private ExampleService service; ... }This annotation is
@Repeatableand may be specified multiple times when working with Java 8 or contained within a@SpyBeansannotation.- 从以下版本开始:
 - 1.4.0
 - 另请参阅:
 MockitoPostProcessor
可选元素概要
可选元素 修饰符和类型 可选元素 说明 Class<?>[]classesThe classes to spy.StringnameThe name of the bean to spy.booleanproxyTargetAwareIndicates that Mockito methods such asverify(mock)should use thetargetof AOP advised beans, rather than the proxy itself.MockResetresetThe reset mode to apply to the spied bean.Class<?>[]valueThe classes to spy.
classes
@AliasFor("value") Class<?>[] classesThe classes to spy. Each class specified here will result in a spy being applied. Classes can be omitted when the annotation is used on a field.When
@SpyBeanalso defines anamethis attribute can only contain a single value.If this is the only specified attribute consider using the
valuealias instead.- 返回:
 - the classes to spy
 
- 默认值:
 - {}
 
reset
MockReset reset
The reset mode to apply to the spied bean. The default isMockReset.AFTERmeaning that spies are automatically reset after each test method is invoked.- 返回:
 - the reset mode
 
- 默认值:
 - org.springframework.boot.test.mock.mockito.MockReset.AFTER
 
proxyTargetAware
boolean proxyTargetAware
Indicates that Mockito methods such asverify(mock)should use thetargetof AOP advised beans, rather than the proxy itself. If set tofalseyou may need to use the result ofAopTestUtils.getUltimateTargetObject(...)when calling Mockito methods.- 返回:
 trueif the target of AOP advised beans is used orfalseif the proxy is used directly
- 默认值:
 - true