0

我正在尝试使用 Rhino Mock 模拟 WCF 客户端代理,但我运气不佳。

    var ServiceMock = MockRepository.GeneratePartialMock<ServiceClient>();
    ServiceMock.Expect(p => p.Publish("")).IgnoreArguments().Return("Worked");

这就是我一直试图模拟代理的方式。这是通过构造函数进行的正常设置。

这似乎没有嘲笑 ServiceClient 任何人都可以帮忙吗?

4

2 回答 2

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

于 2012-09-13T09:09:39.863 回答
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());
于 2012-09-13T14:33:37.150 回答