2013-03-21 16 views
5

Sto usando gmock per deridere le mie dipendenze nel codice legacy. Uno della classe ha un metodo con 11 parametri. Quando ho provato a usare MOCK_METHOD11_WITH_CALLTYPE per deriderlo, ho scoperto che questa macro non esiste. gmock applica solo fino a 10 parametri. Cosa suggerisci per questo? Devo implementare questo metodo con il corpo fittizio? Oppure copia & estendi la macro? Grazie!metodo mock con 11 parametri con gmock

PS, non ho bisogno di prendere in giro questo metodo nei miei test in questo momento, ma probabilmente è necessario farlo in futuro.

Con i migliori saluti,

risposta

5

metodi con più di 10 parametri possono essere un segno di difficoltà. Posso suggerire una soluzione alternativa che possa aiutare il tuo caso specifico ma che potrebbe anche essere una buona idea, a parte il beffardo. Prendi alcuni dei parametri che hanno senso come gruppo e aggregali in una struttura. Quindi passa un'istanza di quella struttura come argomento al metodo. Quindi, invece di 11 argomenti potresti avere 3 o 4. Questo non solo aiuta con il problema della libreria di simulazione che stai avendo, ma può migliorare l'usabilità della tua classe, dato che i metodi con così tanti argomenti di solito sono difficili da leggere chiama il sito.

+0

io sono d'accordo che è una specie di odore di codice. Apprezzo il tuo suggerimento. Ma è una base di codice legacy e poiché il metodo fa parte dell'API, quindi proverò qualcos'altro. Ora, sto ignorando una versione banale. – Archer

+0

Il codice legacy non è un problema: basta aggiungere un nuovo metodo per prendere una struct, mantenere la vecchia maniera e uno di loro chiama l'altro. Non è un grosso problema per renderlo compatibile con le versioni precedenti e continuare a ospitare i tuoi test. –

0

Nel caso in cui qualcuno ha bisogno di più argomenti gmock ecco un colpo di testa di sola estensione: gmock-more-args

Problemi correlati