2009-03-24 5 views
13

Ich sehe das immer auf DotNetKicks etc ... Aber kann nicht genau herausfinden, was es ist (auf Englisch) oder was es tut? Ich bin dumm, also wenn du es einfach erklären könntest, wäre es großartig und warum würde ich es benutzen (wenn es etwas ist, was ich benutze) ???Was ist Moq?

Dank

Antwort

20

Moq ist ein Mockframework für C# /. NET. Es wird im Komponententest verwendet, um die zu testende Klasse von ihren Abhängigkeiten zu isolieren und sicherzustellen, dass die richtigen Methoden für die abhängigen Objekte aufgerufen werden. Weitere Informationen zum Thema Spott finden Sie im Wikipedia-Artikel unter Mock Objects.

Andere spöttischen Frameworks (für .NET) umfassen TypeMock, RhinoMocks, nMock, Etc.

+0

Excellent thanks ... Ich denke, ich muss lesen über Unit Testing mehr als gut - geschätzt Danke – leen3o

+4

MOQ ist auch ein Begriff im Handelsgeschäft verwendet = "Mindestbestellmenge": ein Produkt, das $ 100 bei einer Bestellung kostet Menge von 5000 Stück könnte so niedrig wie $ 20 sein, wenn Sie eine Million Einheiten kaufen. Das hat nichts mit Informatik zu tun, die ich kenne! :) –

+0

Mehr richtig, es ist ein Isolationsrahmen, da nicht alle Fälschungen Mocks sind. – StuperUser

3

Moq ist eine spottende Engine für .Net TDD.

4

In einfachem Englisch ist Moq eine Bibliothek, die, wenn Sie in Ihrem Projekt enthalten geben Ihnen Kraft in einfachen Unit Testing zu tun Weise. Warum? Weil eine Funktion eine andere aufrufen kann, dann eine andere und so weiter. Aber in Wirklichkeit, was benötigt wird, nur der Rückgabewert vom ersten Anruf bis zur nächsten Zeile. Moq hilft, den tatsächlichen Aufruf dieser Methode zu ignorieren, und Sie geben stattdessen zurück, was diese Funktion zurückgegeben hat. und überprüfen Sie, nachdem alle Zeilen des Codes ausgeführt wurde, was Sie wollen, was Sie erhalten oder nicht. Zu viel Englisch, so ist hier ein Beispiel:

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

Nun, hier first zu für secondcall() benötigt wird, aber man kann eigentlich nicht help.firstcall(), wie es in einer anderen Schicht nennen. So ist Mocking getan, fälschen diese Methode aufgerufen wurde:

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

Hier denken, SetUP als Methodenaufruf fälschen, sind wir nur daran interessiert in Returns.