Учитывая, что у меня есть TcpClient
, например:
TcpClient.newClient(...)
.pipelineConfigurator(...)
.createConnectionRequest()
.flatMap(c -> c.getInput())
Я бы хотел протестировать его, используя Netty's EmbeddedChannel
, чтобы смоделировать взаимодействия между сервером и клиентом и сделать утверждения на обоих * 1006.* и TestSubscriber
.
Я изо всех сил пытаюсь найти способ передать EmbeddedChannel
, чтобы достигнуть этого.Я смотрел на channelProvider()
, чтобы сделать это так:
EmbeddedChannel channel = new EmbeddedChannel()
ChannelPorivderFactory providerFactory = (a,b,c,d) -> n -> Observable.just(channel);
TestSubscriber<Object> subscriber = new TestSubscriber<>();
TcpClient.newClient(...)
.pipelineConfigurator(...)
.channelProvider(providerFactory)
.createConnectionRequest()
.flatMap(c -> c.getInput())
.subscribe(subscriber);
embeddedChannel.writeInbound(serverMessage);
subscriber.assertValueCount(1);
Теперь я могу channel.writeInbound(someServerResponse)
, и я вижу в журналах проводов Netty, что байты записаны, но я получаю это сообщение
Data received on channel, but no subscriber registered. Discarding data.
Я записываю данные после подписки
что мне не хватает?