Я как всегда со странными вопросами по основам. У меня есть асинхронная передача сетевых пакетов куда-то с теоретическим ответом. Отдельная горутина разруливает посылку, получение ответа и попытки. Ответ шлет в канал. Один канал на одну полную посылку. Тот, кто попросил отправить, блокируется на канале и ждет в него ответа. Канал создается синхронный. Иногда, тот, кто попросил, теряет интерес и "уходит". Так иногда нужно. Поэтому в горутине, разруливающей посылку, для ответа полный select/case/default и потом close.
Всё хорошо.
Но на тесте я вдруг понял, что мне не проверить, что ответ принят. Потому что канал никто не случает во время посылки. Или в тесте надо городить горутины. Или надо делать буферизированный канал только для теста. Что делать?