2009-03-24 14 views
13

Continuo a vedere questo riferito a DotNetKicks ecc ... Eppure non riesco a scoprire esattamente di cosa si tratta (in inglese) o cosa fa? Sono stupido, quindi se potessi spiegarlo semplicemente sarebbe fantastico e perché lo userei (se è qualcosa che uso) ???Cos'è Moq?

Grazie

risposta

20

Moq è un quadro di scherno per C# /. NET. Viene utilizzato nei test delle unità per isolare la classe sottoposta a test dalle sue dipendenze e garantire che vengano chiamati i metodi corretti sugli oggetti dipendenti. Per maggiori informazioni su come deridere, si consiglia di consultare l'articolo di Wikipedia su Mock Objects.

Altre strutture di simulazione (per .NET) includono TypeMock, RhinoMocks, nMock, ecc.

+0

Eccellente grazie ... Penso di aver bisogno di leggere più approfonditamente anche il test unitario - Grazie riconoscibile – leen3o

+4

MOQ è anche un termine utilizzato nel commercio commerciale = "Quantità di ordine minimo": un prodotto che costa $ 100 a un ordine una quantità di 5000 pezzi potrebbe arrivare a $ 20 se acquisti un milione di unità. Questo non ha nulla a che fare con l'informatica, lo so! :) –

+0

Più correttamente, è un framework di isolamento, dal momento che non tutti i falsi sono mock. – StuperUser

3

Moq è un motore di simulazione per fare .Net TDD.

4

In inglese semplice, Moq è una libreria che quando si include nel progetto vi darà il potere di fare Unit Testing in facile maniera. Perché? Perché una funzione può chiamarne un'altra, poi un'altra e così via. Ma in realtà ciò che è necessario, solo il valore di ritorno dalla prima chiamata per passare alla riga successiva. Moq aiuta a ignorare la chiamata effettiva di quel metodo e restituisce invece ciò che quella funzione stava restituendo. e verificare dopo aver eseguito tutte le righe di codice, ciò che si desidera è ciò che si ottiene o no. Troppo inglese, ecco un esempio:

String Somethod() 
{ 
    IHelper help = new IHelper(); 
    String first = help.firstcall(); 
    String second= secondcall(first); 
    return second; 
} 

Ora, è necessario qui first per per secondcall(), ma non si può effettivamente chiamare help.firstcall() come in qualche altro strato. Così Mocking è fatto, fingendo che il metodo è stato chiamato:

[TestMethod] 
public void SomeMethod_TestSecond 
{ 
    mockedIHelper.Setup(x=>x.firstcall()).Returns("Whatever i want"); 
} 

Qui, penso, SetUP come fingendo chiamata di metodo, siamo solo interessati a Returns.