Ссылка на службу WCF имеет интерфейс, поэтому вся ваша логика должна ссылаться на этот интерфейс, а не на клиент службы. В таком случае вы сможете выбрать, какую реализацию (реальную или фальшивую) передать логике вашего приложения.
Допустим, ваш интерфейс службы WCF такой:
public interface IWcfInterface {
string[] GetTheNames();
}
И ваш класс логики приложения выглядит так:
public class ApplicationLogic {
public IWcfInterface WcfInterface {get;set;}
public SomeLogic() {
WcfInterface.GetTheNames();
}
}
Так что в случае, если вам нужна реальная реализация, вы просто передаете ее в свойство WcfInterface вашей логики приложения (обычно это делает контейнер внедрения зависимостей).
Поддельная реализация также будет выглядеть просто:
public FakeImplementation : IWcfInterface {
public string[] GetTheNames() {
return new string[] { "foo", "bar" };
}
}