我正在尝试使用 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 的使用方式)
非常感谢!