繁体   English   中英

RhinoMock帮助:模拟WCF服务

[英]RhinoMock help: Mocking WCF service

我正在尝试使用RhinoMock来模拟wcf服务。

说我有以下服务:

    [OperationContract]
    List<User> SearchUsers(UserSearchFilter filter);

使用Visual Studio添加此服务将生成代理,该代理具有如下界面:

 public interface ResourceService {

    System.IAsyncResult BeginSearchUsers(UserSearchFilter filter, System.AsyncCallback callback, object asyncState);

    ObservableCollection<User> EndSearchUsers(System.IAsyncResult result);
}

然后我创建一个使用此服务的ViewModel,如下所示:

        private ResourceService service;
    public ViewModelBase(ResourceService serv)
    {
        service = serv;
        var filter = new UserSearchFilter();
        service.BeginSearchUsers(filter, a =>
        {
            this.Users = service.EndSearchUsers(a); 
        }, null);
    }

然后是问题。 如何使用RhinoMock模拟此服务?

       [TestMethod]
    public void UserGetsPopulatedOnCreationOfViewModel()
    {
        // Is stub the right thing to use?
        ResourceService serv = MockRepository.GenerateStub<ResourceService>();

        // Do some setup... Don't know how?
        var vm = new ViewModel(serv);

        Assert.IsTrue(vm.Users.Count > 0);
    }

如果有人能帮我正确使用RhinoMock,我真的很开心

(注意:我正在使用Silverlight,但我认为这不会改变RhinoMock的使用方式)

非常感谢!

我写了一篇关于测试使用WCF服务的应用程序的四篇文章

第2部分讨论使用RhinoMocks模拟服务

第3部分讨论使用Moq模拟异步服务

请注意,第3部分可以很容易地转换为RhinoMocks。 我只是试图展示不同的模拟框架,并且该技术不依赖于模拟框架。

希望能帮助到你!

编辑所以,在Rhino Mocks中,你可以在设置中执行此操作:

mockService.YourEvent += null;
IEventRaiser loadRaiser = LastCall.IgnoreArguments().GetEventRaiser();

然后在播放中,你这样做:

loadRaiser.Raise(mockService, CreateEventArgs());

您可以在Phil Haack的博客文章中找到有关Rhino中模拟事件的更多信息。

我将创建服务将实现的接口(IResourceService)。 然后在Silverlight端创建调用WCF服务本身的IResourceService的自定义实现。

RihnoMock将为IResourceService接口创建存根,而不是为WCF服务创建存根。

使用Prism 2很容易,你可以在这里阅读更多内容:

http://mokosh.co.uk/post/2009/04/19/prism-2-wpf-and-silverlight-services/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM