wcf - RhinoMock 帮助 : Mocking WCF service

标签 wcf silverlight rhino-mocks

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

假设我有以下服务:

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

使用 Visual Studio 添加此服务将生成一个代理,该代理具有如下接口(interface):
 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 的使用方式)

非常感谢!

最佳答案

我写了一个4-part article所有关于测试使用 WCF 服务的应用程序。

Part 2谈论使用 RhinoMocks 模拟服务

Part 3谈论使用 Moq 模拟异步服务

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

希望能帮助到你!

编辑
因此,在 Rhino Mocks 中,您可以在设置中执行以下操作:

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

然后在播放中,你这样做:
loadRaiser.Raise(mockService, CreateEventArgs());

您可以在 Phil Haack's blog post 中找到更多关于 Rhino 中模拟事件的信息。 .

关于wcf - RhinoMock 帮助 : Mocking WCF service,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/805832/

相关文章:

wcf - 如何从 Web 服务 (WCF) 公开我的集合

c# - 是否有 WCF Rest C# 客户端生成工具?

c# - WCF 服务在每次调用时实例化

c# - 在 .net 项目中使用 SilverLight 库 (dll)

c# - 匿名委托(delegate)事件监听器会阻止垃圾回收吗?

c# - 犀牛模拟 : How to stub a generic method to catch an anonymous type?

c# - 如何使用 Rhino 模拟设置 stub 和分配网络响应

c# - Svc 文件在没有代码隐藏的情况下工作?

wpf - IdeaBlade有哪些局限性?

unit-testing - 使用 Rhino Mocks 设置 stub 方法的返回值的技术差异