2010-12-07 67 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