Я сделал нечто очень похожее на это в ряде проектов.
Вы не хотите создавать заглушенный веб-сервис. Это просто добавление зависимости, которая вам не нужна. Я создал интерфейс, имитирующий API-интерфейс веб-службы. Затем я создал прокси-класс, который будет вызывать веб-сервис в действующей системе. Для тестирования я использовал RhinoMocks для создания ложных классов, которые возвращают результаты, которые я хотел проверить. Это было очень полезно для меня, так как я мог затем производить все виды «неожиданного» поведения, которое было бы невозможно с живой системой.
public interface IServiceFacade {
string Assignments();
}
public class ServiceFacade : IServiceFacade {
private readonly Service _service;
public ServiceFacade(Service service) {
_service = service;
}
public string Assignments() {
return _service.Assignments();
}
}
Тогда мой тестовый код содержал такие вещи:
var serviceFacade = MockRepository.GenerateMock<IServiceFacade>();
serviceFacade.Stub(sf => sf.Assignments()).Return("BLAH BLAH BLAH");
или
serviceFacade.Stub(sf => sf.Assignments()).Return(null);
или
serviceFacade.Stub(sf => sf.Assignments()).Throw(new Exception("Some exception"));
Я нашел это очень полезным.