2013-06-06 7 views
0

Я использую PowerMock 1.4.12 и JUnit 4.8.1. У меня возникла проблема с получением метода для возврата данных, которые я хочу. У меня естьКак издеваться над методом в PowerMock?

@Before 
public void setUp() throws Exception 
{ 
    ... 
    userService = createMock(UserService.class); 
    loginController.setUserService(userService); 
    … 
} 

@Test 
public final void testAuthenticateForLoggedInAdmin() 
{ 
    authorities.add(adminAuthority); 

    final User user = new User(); 
    user.setUserName("userName"); 
    user.setPassword("password"); 
    user.setFirstName("firstName"); 
    user.setMiddleName("middleName"); 
    user.setLastName("lastName"); 
    user.setUrl("localhost"); 
    user.setId("id1"); 
    final TestsubcoAuthenticationUser principal = new TestsubcoAuthenticationUser(user.getUserName(), 
                           user.getPassword(), 
                           true, 
                           true, 
                           true, 
                           true, 
                           authorities, 
                           user.getFirstName(), 
                           user.getLastName(), 
                           user.getMiddleName(), 
                           user.getUrl(), 
                           user.getId(), 
                           null, 
                           null, 
                           null); 
    authentication = new UsernamePasswordAuthenticationToken(principal, new Object(), authorities); 

    securityContext.setAuthentication(authentication); 
    mockStatic(SecurityContextHolder.class); 
    expect(SecurityContextHolder.getContext()).andReturn(securityContext); 
    expect(userService.findByUsernameAndUrl(user.getUserName(), user.getUrl())).andReturn(user); 
    ... 
    String result = loginController.authenticate(); 

но когда мой метод в вопросе вызывается внутри контроллера,

 final User user = userService.findByUsernameAndUrl(sbUser.getUsername(), sbUser.getUrl()); 

возвращаемое значение равно нулю вместо объекта я указал. Любые теории, почему это так, или предложения по дальнейшему устранению неполадок? Я проверил путем отладки, что значения параметра String, переданные в контроллере, совпадают с теми, которые я указывал в методе «ожидать».

ответ

1

Похоже, вы не звонили replay на свои издевательства.

replay

0
but when my method in question gets called from within the controller, 

Я не уверен, что ваш средний, метод вопрос вызывается внутри контроллера. Когда вы вызываете метод, ваш объект userService должен быть тем же объектом, который вы издевались. также проверьте значение аргумента, если оно.

Я не нашел это полезным, поделился более подробной информацией о том, что вы пытаетесь выполнить здесь.

Смежные вопросы