Я пытаюсь издеваться над статическим методом с использованием powermock. Ниже мой код:Издевательский статический метод с Mockito
public class Helper{
public static User getLoggedInUser(HttpServletRequest request) throws NotFoundException {
String access = request.getHeader("Authorization");
if(access == null || access.isEmpty()) {
throw new Exception("Access is null");
}
User user = new User();
return user;
}
}
И это функция управления, откуда я звоню статический метод GetUser:
@RequestMapping(value = "user/userInfo/{Id}", method = RequestMethod.GET, headers = "Accept=application/json")
public @ResponseBody
ResultDTO getUser(@PathVariable("Id") Integer Id, HttpServletRequest request) throws NotFoundException, UnauthorizedException {
Integer userID = -1;
User user = Helper.getLoggedInUser(request);
if(user != null){
userID = user.getUserId();
}
//do something
}
И это мой тестовый класс:
//@RunWith(PowerMockRunner.class)
//@PrepareForTest(Helper.class)
public class CustomerControllerNGTest {
@InjectMocks
private userController instance = new PaymentCustomerController();
public PaymentCustomerControllerNGTest() {
}
@BeforeClass
public void setUpClass() throws Exception {
}
@AfterClass
public static void tearDownClass() throws Exception {
}
@BeforeMethod
public void setUpMethod() throws Exception {
try{
MockitoAnnotations.initMocks(this);
}catch(Exception ex){
System.out.println(ex.getMessage());
}
try{
mockMvc = MockMvcBuilders.standaloneSetup(instance).build();
// mockMvc = MockMvcBuilders.webAppContextSetup(wac).build();
}catch(Exception ex){
System.out.println(ex.getMessage());
}
}
@AfterMethod
public void tearDownMethod() throws Exception {
}
@Test
public void testGetUserInfo() throws Exception {
User user = new User();
user.setUserId(1234);
HttpServletRequest request = mock(HttpServletRequest.class);
//this is for the static method
PowerMockito.mockStatic(Helper.class);
**PowerMockito.when(Helper.getLoggedInUser(request)).thenReturn(user);**
//do something
}
}
Теперь, когда я выполняю тестовый пример, и всякий раз, когда он выполняет одиночный, выделенный жирным шрифтом, он входит в статический метод и бросает исключение «Доступ имеет значение null», а не moc король метод, он выполняет метод. Есть идеи? Я также попытался раскомментировав эти строки:
//@RunWith(PowerMockRunner.class)
//@PrepareForTest(Helper.class)
, но еще же исключение. Благодаря
Можете ли вы опубликовать версии Mockito и PowerMock, которые вы используете? – luboskrnac