2010-07-12 12 views
5

Ho problemi a capire gli argomenti appropriati dell'opzione Arg in RhinoMocks.Rhino Mocks - Uso corretto di Arg <T> .Ref

Sto provando a simulare il metodo MSIRecordGetString che ha un parametro Int32 di riferimento. Attualmente ho:

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

Qualcuno può farmi sapere cosa ??? dovrebbe/potrebbe essere sostituito con. So che dovrebbe essere qualcosa di tipo AbstractConstraint ma non sono sicuro di ciò che è valido. Difficoltà a trovare esempi di utilizzo corretto.

Cheers.

risposta

9

In realtà sono abituato a Moq, ma la mia comprensione di questo primo argomento è un vincolo, ma visto che non ti interessa particolarmente il valore (sto assumendo), potresti fare quanto segue:

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

?

+0

Ciao Matt, grazie per la risposta. Non sono proprio sicuro di avere le ragioni di questo vincolo però. Perché questo è diverso dalla sintassi Out che non richiede un vincolo astratto? –

+0

Probabilmente perché i parametri out devono essere assegnati a, mentre i parametri ref no, quindi l'idea di design è che i parametri ref possano avere un valore preesistente da passare. È possibile vincolarlo a questo punto? –

+1

@MatthewAbbott Penso che ".Ref' sia mancante tra" Arg "e" (Is.Anything(), 0) .Dummy'. Quindi dovrebbe essere 'ref Arg .Ref (Is.Anything(), 0) .Dummy'. –