Aiutare con la sintassi delle moli per testare il metodo privato con generici
-
27-10-2019 - |
Domanda
Ho una firma per un metodo che assomiglia a questo: IEnumerable BuildCustomerUpdateplan privato (elenca LocalCacheChangedCustomer, elenco CrmChangedCustomer) {}
Quando guardo l'oggetto malizzato, la sintassi (intellisense) di come chiamare il metodo e test è assolutamente confuso per me e ogni volta che gli faccio un colpo, ricevo errori di compilation. Ho esaminato i tutorial di base forniti sul sito di MSFT, ma semplicemente non capisco come testare un metodo privato usando le talpe o come gestire il tipo di ritorno e più parametri.
Sfortunatamente non sono stato in grado di trovare altri buoni Howto o thread che dimostrano un campione più complesso che lavorare con un semplice metodo Add () che sputa un INT e accetta un int. :(
Consigli?
Soluzione
Nel tuo progetto di test, prima assicurati di aggiungere un gruppo moli corrispondente al test del gruppo. Ti consigliamo anche di aggiungere un using
Dichiarazione dell'Assembly-under-test con .Moles
Aggiunto in modo da poter utilizzare l'assemblaggio a morso.
Le moli cambia i nomi delle classi e dei metodi nella forma M[Original Class Name].[Original Method Name][typeof param1][typeof param2]...
. Nel tuo caso potrebbe apparire una deviazione per quel metodo MClass.BuildCustomerUpdatePlanListList = (List x, List y) => { [code]};
. Che definisce un metodo anonimo che ne prende due List
S come parametri e inserirai qualsiasi codice desiderato nella funzione. Assicurati solo di restituire un IEnumerable
Con quel metodo anonimo.
Ecco un esempio usando le talpe per deviare Directory.GetFiles
:
using System.IO.Moles;
[assembly: MoledType(typeof(System.IO.Directory))]
...
MDirectory.GetFilesStringString = (string x, string y) => new string[0];
Dal Directory
La classe è membro di System.IO
Io uso using System.IO.Moles;
Per specificare che voglio usare i membri molenati dell'assemblea.
Le talpe richiedono di specificare i tipi moliti: [assembly: MoledType(typeof(System.IO.Directory))]
fa il lavoro.
Infine, Directory.GetFiles
Prende due stringhe come parametri e restituisce un array di stringhe. Per deviare il metodo per restituire l'equivalente di nessun file trovato, il metodo morso ritorna new string[0]
. Le parentesi graffe sono necessarie se si desidera più righe nel metodo anonimo e, se non deviazione di un metodo vuoto, un'istruzione di ritorno che corrisponde al tipo di restituzione del metodo originale.