Я бы написал интерфейс, который абстрагирует труднодоступные для тестирования части именованного канала.
Реализация этого была бы довольно простой (с использованием NamedPipe ... apis), и я бы не стал это тестировать модулем.
Как только это будет сделано, я использую интерфейс в коде приложения. У меня была бы фиктивная реализация в тестовом коде, и я использовал бы фиктивный объект, чтобы делать что-то на конвейере.
например. В моем интерфейсе было бы событие ClientConnected, представляющее некоторые данные о клиенте.
Затем я реализовал бы этот интерфейс в фиктивном объекте, чтобы он вызывал событие подключения к клиенту и утверждал, что приложение действовало правильно, когда клиент был подключен.
НТН.