我正在尝试使用Rhino Mock模拟WCF客户端代理,但我没有太多运气。
var ServiceMock = MockRepository.GeneratePartialMock<ServiceClient>();
ServiceMock.Expect(p => p.Publish("")).IgnoreArguments().Return("Worked");
这就是我试图模拟代理的方式。这是通过构造函数设置的常规。
这似乎没有嘲笑ServiceClient可以有人帮忙吗?
答案 0 :(得分:0)
这将帮助您使用带有WCF的Rhino模拟
http://kashfarooq.wordpress.com/2008/11/29/mocking-wcf-services-with-rhinomocks/和 http://ayende.com/blog/2095/wcf-mocking-and-ioc-oh-my
答案 1 :(得分:0)
应该能够做到这样的事情:
[TestClass]
public class MyTestClass{
private IService _service;
[TestInitialize]
public void Setup(){
_service = MockRepository.GenerateStrictMock<IService, ICommunicationObject>();
}
[TestMethod]
public void TestWhatsGoingOn(){
_service.Expect(.....).Return(.....);
//This will test the close is called too (hence the ICommunicationObject above)
((ICommunicationObject)_service).Expect(r => r.Close());
}
[TestCleanup]
public void CleanItUp{
_service.VerifyAllExpectations();
}
这意味着您也可以测试close方法(如预期的那样)
我认为你需要生成一个严格的模拟而不是部分...
当然,如果你想声明在异常处理等过程中调用.Abort(),你可以这样做:
((ICommunicationObject)_service).Expect(r => r.Abort());