2010-12-07 27 views
2

J'essaie d'écrire un test Rhino Mocks pour vérifier que je me suis inscrit à un événement. Voici mon test:Comment tester l'enregistrement d'un événement dans 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); 

Mon code est un simple registre pour l'événement comme celui-ci:

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

     } 
     catch (Exception ex) 
     { 

     } 
    } 

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

Mon service de données ressemble à ceci:

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

je ne peux pas sur ce dont Rhino Mocks a besoin pour ce test. L'erreur est:

Erreur 7 Impossible de convertir implicitement le type 'MACS2SLApp.MACSWcfServiceProxy.GetCarriersCompletedEventArgs' à 'System.EventHandler' C: \ Documents and Settings \ 600.124.238 \ Mes Documents \ MACS3 \ Prototype \ Interface utilisateur Web \ MACSUnitTests \ MACSUnitTests. cs 126 68 MACSUnitTests

Toutes les idées seraient appréciées.

grâce, Bill44077

+0

Suis-je sur la bonne voie ici ou loin de la base? Merci! –

Répondre

2

Votre Arg<> contrainte doit être le type d'événement, pas le type de args événement. Essayez:

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

Merci Patrick! Cela résout mon problème. –