0
나는 임베디드 채널이 어떻게 작동하는지 알아 내기 위해 Netty에서 아주 간단한 것을 테스트하려고합니다. 같은테스트 채널 NetHyards의 핸드 헬드
@Component
@Sharable
public class VersionServerHandler extends ChannelInboundHandlerAdapter {
private VersionService versionService;
@Autowired
public VersionServerHandler(VersionService versionService) {
this.versionService = versionService;
}
@Override
public void channelRead(ChannelHandlerContext ctx, Object msg) {
boolean isSupported = versionService.isVersionSupported((VersionRequest) msg.getVersion());
// more logic
ctx.writeAndFlush(msg);
}
내 테스트 같습니다 : 내 핸들러는 다음과 같습니다 난 그냥 그물코 예처럼에서 VersionServerHandler와 EmbeddedChannel 바이트를 쓰기 위해 노력하고있어
@Mock
private VersionService versionService;
@Test
public void testChannelRead() {
EmbeddedChannel embeddedChannel = new EmbeddedChannel(new VersionServerHandler(versionService);
ByteBuf buf = Unpooled.buffer();
for (int i = 0; i < 9; i++) {
buf.writeByte(i);
}
ByteBuf dup = buf.duplicate();
boolean test = embeddedChannel.writeInbound(dup.retain());
// test is false
하지만 test
은 false입니다 사실이 아니다. 제가 누락 된 것이 있습니까? 감사.
embeddedChannel에서 읽을 내용이 있으면 writeInbound()가 true를 반환한다고 생각했습니다. 그래서이 시나리오에서 writeInbound가 true를 반환 할 것이라고 생각했습니다. – Crystal
내가 말했듯이 뭔가가 파이프 라인 끝에 도달하여'readInbound()'를 통해 읽을 수있는 경우에만 true를 반환한다고 말했듯이 –