2017-10-17 1 views
0

저는 netty 프레임 워크에 익숙하지 않습니다. 우리는 SimpleChannelInboundHandler를 구현하고 ChannelHandlerContext와 FullHTTPRequest를 사용하는 ChannelRead0 함수를 재정의하는 API 처리기를 가지고 있습니다. 입력을 조롱하는 단위 테스트가 필요합니다. 누구나이 일을 도와 줄 수 있습니까?SimpleChannelInboundHandler <FullHTTPRequest> 단위 테스트 (net)

public class MyContentExtractionHandler extends SimpleChannelInboundHandler<FullHttpRequest> { 
    @Override 
    protected void channelRead0(ChannelHandlerContext ctx, FullHttpRequest msg) throws Exception { 
     int contentLenght = msg.content().capacity(); 
     byte[] content = new byte[contentLenght]; 
     msg.content().getBytes(0, content); 
     ctx.fireChannelRead(new String(content)); 
    } 
} 

내가 정기적 DefaultFullHttpRequest을 만들고 ChannelHandlerContext을 조롱 mockito를 사용합니다 :

답변

0

내가 같이 보이는, 내 MyContentExtractionHandler을 테스트한다고 가정 할 수 있습니다. 내 단위 테스트는 다음과 같이 보일 것이다 :

public class MyContentExtractionHandlerTest { 

    @Mock 
    ChannelHandlerContext mockCtx = BDDMockito.mock(ChannelHandlerContext.class); 

    MyContentExtractionHandler myContentExtractorHandler = new MyContentExtractionHandler(); 

    @Test 
    public void myTest() throws Exception { 
     String content = "MyContentHello"; 
     DefaultFullHttpRequest fullHttpRequest = new DefaultFullHttpRequest(HttpVersion.HTTP_1_1, HttpMethod.POST, "/my /uri", Unpooled.copiedBuffer(content.getBytes())); 
     myContentExtractorHandler.channelRead(mockCtx, fullHttpRequest); 
     BDDMockito.verify(mockCtx).fireChannelRead(content); //verify that fireChannelRead was called once with the expected result 
    } 
} 

대부분의 아마, 당신의 SimpleChannelInboundHandler가 최종 핸들러 될 것입니다. 따라서 fireChannelRead()을 확인하는 대신 메시지를 읽은 후 호출하는 방법을 확인하십시오.

+0

여기서 MyUrlExtractorHandler가 할 수있는 것은 무엇입니까? 나는 netty와 mockito에 매우 익숙합니다. –

+0

좋아, 내 업데이트 대답을 참조하십시오. 좀 더 자세한 것은 불가능할 것 같네요 ... –

관련 문제