2017-08-12 231 views
0

我用@Primary@Profile嘲笑在Spring測試一個bean:如何僅使用Mockito模擬Spring中的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; 
} 

UserService豆回報null其他的方法,我怎麼能窺探真實的創建豆,只有嘲笑tokenValidation方法?

回答

0

通過發送它放慢參數間諜UserService bean的一個方法,建設這個bean我們自動裝配現有UserService的實例,從Spring上下文的過程中和使用的Mockito的間諜功能:

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

@Bean 
@Primary 
public UserService userServiceTest(UserService userService) { 
    UserService userService = Mockito.spy(userService); 
    TokenValidationUrl validation = new TokenValidationUrl(); 
    validation.setValid(true); 
    validation.setUid("123456789"); 
    Mockito.when(userService.tokenValidation("23456")).thenReturn(validation); 
    return userService; 
} 
相關問題