如何使用 Mockito 在 Spring 中仅模拟 bean 的方法?

Sae*_*fam 5 spring unit-testing mocking mockito

我在 Spring 测试中使用@Primaryand@Profile来模拟 bean:

@Profile("test")
@Configuration
public class TestBeanConf {

@Bean
@Primary
public UserService userService() {
    UserService userService = Mockito.mock(UserService.class);
    TokenValidationUrl validation = new TokenValidationUrl();
    validation.setValid(true);
    validation.setUid("123456789");
    Mockito.when(userService.tokenValidation("23456")).thenReturn(validation);
    return userService;
}
Run Code Online (Sandbox Code Playgroud)

UserService但是bean返回的其他方法null,我如何才能监视真正创建的bean并且只有mocktokenValidation方法?

Sae*_*fam 4

为了监视 bean 的一种方法UserService,在构建此 bean 期间,我们通过将其作为参数发送来从 Spring 上下文自动装配 UserService 的现有实例,并使用 Mockito\xe2\x80\x99s 监视功能:

\n\n
@Profile("test")\n@Configuration\npublic class TestBeanConf {\n\n@Bean\n@Primary\npublic UserService userServiceTest(UserService userService) {\n    UserService userService = Mockito.spy(userService);\n    TokenValidationUrl validation = new TokenValidationUrl();\n    validation.setValid(true);\n    validation.setUid("123456789");\n    Mockito.when(userService.tokenValidation("23456")).thenReturn(validation);\n    return userService;\n}\n
Run Code Online (Sandbox Code Playgroud)\n