2017-10-31 1 views
0

JUnit 4 및 mockito를 사용하여 단위 테스트를 생성합니다. 클래스 멤버 중 하나에 모의 인스턴스를 제공하려고 할 때 문제가 발생했습니다.주입 된 클래스 멤버에게 모의 인스턴스를 제공하는 방법

여기에 클래스를 테스트 할 수있다 : 나는 configService.send(feedbackData)를 사용하려고하면

public class FeedbackServlet extends SlingAllMethodsServlet { 
    @Reference 
    private ConfigService configService; 

    @Override 
    protected void doPost(SlingHttpServletRequest request, SlingHttpServletResponse response) { 
    FeedbackData feedbackData = extractFeedbackData(request.getRequestParameterMap()); 

    try { 
     boolean isEmailSent = configService.send(feedbackData); 
    } catch (Exception e) { 
     ... 
    } 
    } 

    private FeedbackData extractFeedbackData(RequestParameterMap data) { 
    String firstName = data.getValue(ParamKey.FIRST_NAME.toString()).getString(); 
    String email = data.getValue(ParamKey.EMAIL.toString()).getString(); 
    String message = data.getValue(ParamKey.MESSAGE.toString()).getString(); 
    String contactNumber = data.getValue(ParamKey.CONTACT_NUMBER.toString()).getString(); 

    return new FeedbackData(firstName, email, message, contactNumber); 
    } 
} 

이 테스트는 NullPointerException을 생산하고 있습니다. 지금은 테스트 클래스에 누락 된 값을 주입하려고 :

public class FeedbackServletTest extends Mockito { 
    @InjectMocks 
    private ConfigService configService = mock(ConfigService.class); 

    @Test 
    public void testDoPost() throws Exception { 
    ... 
    when(configService.send(new FeedbackData("Nikola", "[email protected]", "Our virtues and our failings are inseparable, like force and matter." + 
      "When they separate, man is no more.", "09991234567"))).thenCallRealMethod(); 
    ... 
    } 
} 

내가 테스트를 다시 실행하려하지만 NPE는 여전히 존재한다.

어떻게 제대로 수행 할 수 있습니까?

답변

1

@InjectMocks 주석은 테스트하려는 객체 인스턴스에 배치해야합니다.

@Mock 
ConfigService mockedConfigService; 

@InjectMocks 
FeedbackServlet tested = new FeedbackServlet(); 
관련 문제