2010-07-12 2 views
5

Je rencontre des problèmes pour trouver les bons arguments de l'option Arg dans RhinoMocks.Rhino Mocks - Utilisation correcte de Arg <T> .Ref

J'essaye de simuler la méthode MSIRecordGetString qui a un paramètre ref Int32. Actuellement, j'ai:

_Api.RecordGetString(Arg<IntPtr>.Is.Anything, 
        Arg<Int32>.Is.Anything, 
        Arg<StringBuilder>.Is.Anything, 
        ref Arg<Int32>.Ref(???, 0).Dummy); 

Quelqu'un peut-il me dire ce que ??? devrait/pourrait être remplacé par. Je sais que ça devrait être quelque chose de type AbstractConstraint mais je ne suis pas sûr de ce qui est valide. J'ai de la difficulté à trouver des exemples d'utilisation appropriée.

Cheers.

Répondre

9

En fait, je suis habitué à Moq, mais ma compréhension de ce premier argument est une contrainte, mais vu que vous ne vous souciez pas particulièrement de la valeur (je suppose), pourriez-vous:

ref Arg<Int32>(Is.Anything(), 0).Dummy 

?

+0

Salut Matt, merci pour la réponse. Pas vraiment sûr d'avoir les raisons de cette contrainte. Pourquoi est-ce différent de la syntaxe Out qui ne nécessite pas de contrainte abstraite? –

+0

Probablement parce que les paramètres out doivent être affectés à, alors que les paramètres ref ne le font pas, donc l'idée de conception est que les paramètres ref peuvent avoir une valeur préexistante à passer. Vous pouvez le contraindre à ce stade? –

+1

@MatthewAbbott Je pense que '.Ref' est absent entre 'Arg ' et '(Is.Anything(), 0) .Dummy'. Donc, il devrait être 'ref Arg .Ref (Is.Anything(), 0) .Dummy'. –

Questions connexes