2010-08-12 6 views
0

J'essaye d'appeler un événement de mon objet mocké. Je le fais comme:Rhino Mocks incrustant un événement avec le paramètre ref

importObject.Raise(x => x.RequestImportLevel += null, false, false, true, importLevel); 

le dernier paramètre devant être transmis par référence. Donc, je reçois une exception

Paramètre n ° 4 est System.Int16 mais doit être System.Int16 &

Que puis-je faire pour gérer cette situation?

Si le problème provient de Rhino Mocks - existe-t-il d'autres frameworks qui supportent correctement cette configuration prête à l'emploi?

+0

N'importe quel moyen de changer l'événement à PAS besoin d'un paramètre ref? Un EventArgs dédié avec une propriété read/write pourrait facilement remplacer le paramètre ref. – PatrickSteele

+0

malheureusement, pas. En fait, il s'agit d'un événement provenant d'un composant COM hérité, et il est impossible de le remplacer par EventArgs. – Shaddix

Répondre

0

Cet objet mis en œuvre une interface, donc je viens de créer une classe fictive, faire hériter de IEventWithRefParameter et introduit une fonction comme

public virtual void RaiseRequestImportLevelEvent(bool hasYc, bool hasWc, bool hasDc, ref short chosenLevel) 
    { 
     if (RequestImportLevel != null) 
     { 
      RequestImportLevel(hasYc, hasWc, hasDc, ref chosenLevel); 
     } 
    } 

Maintenant, je suis en utilisant une instance de cette classe fictive dans mes tests et Quand je souhaite organiser un événement, j'appelle cette fonction.

pas presque une solution propre, mais au moins, il fait l'affaire.

Questions connexes