我在一些項目中做了一些非常類似於此的事情。
您不想創建存根Web服務。這只是添加一個你不需要的依賴。我所做的是創建一個模擬Web服務API的接口。然後,我創建了一個代理類,用於在實時系統中調用Web服務。爲了測試,我使用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"));
我發現這是非常有用的。
很酷的解決方案,但我並不完全認爲這是必要的。有用知道雖然(因此upvote)。 – 2010-06-16 06:35:58