Ваша проблема здесь в том, что вы тесно связали свой бизнес-уровень со своей службой WCF - вы фактически создаете новый экземпляр клиента службы в бизнес-уровне, что означает, что теперь невозможно вызвать метод SendData без вызова также методы обслуживания.
Лучшее решение здесь - это внедрение внедрения зависимости в вашу архитектуру.
В самом простом случае все, что вы делаете, - это передаете экземпляр своего класса обслуживания в бизнес-уровень. Это часто делается во время создания класса, используя параметр конструктора.
public class BusinessClass
{
private ISomeServiceClient _svc;
public BusinessClass(ISomeServiceClient svc)
{
_svc = svc;
}
public void SendData(DataUnit dataUnit)
{
_svc.SomeMethod(dataUnit);
}
}
Обратите внимание, что приведенный выше код является шаблоном проектирования, абсолютно не зависящим от какой-либо инфраструктуры, такой как контейнер Inversion of Control.
Если политика вашей компании не предусматривает использование таких платформ (кстати, безумная политика), вы все равно можете вручную внедрить свои ложные экземпляры службы в свои модульные тесты.