我在一些项目中做了一些非常类似于此的事情。
您不想创建存根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