2010-12-07 20 views
2

我正在尝试编写一个Rhino Mocks测试来验证我是否注册了一个事件。下面是我的测试:如何在Rhino Mocks中测试事件注册

var dataSvc = MockRepository.GenerateStub<IDataService>(); 
    Search srch = new Search(dataSvc, vr); 
    dataSvc.GetCarriersCompleted += srch.OnCarrierDataReturned; 
    dataSvc.AssertWasCalled(x => x.GetCarriersCompleted += Arg<GetCarriersCompletedEventArgs>.Is.Anything); 

我的代码仅仅是事件的简单的寄存器:

public void GetCarrierList() 
    { 
     try 
     { 
      _dataService.GetCarriersCompleted += OnCarrierDataReturned; ; //hangedEventHandler(OnDataReturned); 
      _dataService.GetCarriersAsync(_param); 

     } 
     catch (Exception ex) 
     { 

     } 
    } 

    public void OnCarrierDataReturned(object sender, GetCarriersCompletedEventArgs e) 
    { 
     // get results 
    } 

我的数据服务是这样的:

void GetCarriersAsync(System.Collections.Generic.Dictionary<string, string> param); 
    event System.EventHandler<GetCarriersCompletedEventArgs> GetCarriersCompleted; 

我想不通犀牛嘲笑这个测试需要什么。错误是:

错误7无法隐式转换类型 'MACS2SLApp.MACSWcfServiceProxy.GetCarriersCompletedEventArgs' 到 'System.EventHandler' C:\ Documents和Settings \ 600124238 \我的文档\ MACS3 \原型\ WEB UI \ MACSUnitTests \ MACSUnitTests。 cs 126 68 MACSUnitTests

任何想法,将不胜感激。

感谢, Bill44077

+0

我在这里正确的轨道或基地?谢谢! – 2010-12-08 14:31:20

回答

2

Arg<>约束必须是事件的类型,而不是事件参数的类型。尝试:

Arg<EventHandler<GetCarriersCompletedEventArgs>>.Is.Anything 
+0

谢谢帕特里克!这解决了我的问题。 – 2010-12-10 11:52:05