2009-04-28 14 views
7

Ich mag das Moq Mocking Framework wirklich. Ich habe es in mehreren Projekten verwendet. Leider verlangt einer meiner Kunden, dass wir VB.Net verwenden. Nicht meine Vorliebe, aber hey, .Net ist .Net, richtig?Erfahrungen mit moq mit VB.Net

Ich habe gehört, dass moq einige Probleme mit VB hat. Ist das wahr? Ist es so, was für Probleme? Ich würde erwarten, dass es angesichts der sprachunabhängigen Natur von .Net gut funktioniert.

Sollte ich ein anderes spöttisches Framework für die Verwendung mit VB verwenden?

Antwort

6

Das Hauptproblem von VB.net in Bezug auf Mock Frameworks ist, dass VB im Gegensatz zu C# keine anonymen Methoden, nur Lambda-Ausdrücke (keine Möglichkeit, einen anonymen Action-Delegaten zu deklarieren).

Dies schränkt die Möglichkeiten stark ein. Es gibt auch ein bekanntes Problem mit Eigenschaften mit Parametern.

Auch die Syntax der Sprache für lambdas führt nicht zu etwas so sauber wie C#, Lesbarkeit-weise (keine Flammen bitte, ich bin ein VB-Benutzer und ich vermisse einige C# Funktionen jeden Tag), und das ist teilweise die Attraktion für Moq.

Das einzige Test-Framework, das ich weiß, dass in Bezug auf VB etwas getan hat, ist TypeMock. Sie haben versucht, etwas zu entwerfen, das sich mit der VB-Syntax vermischt.

+0

Welche Art von Problem gibt es bei parametrisierten Eigenschaften? –

+0

Ich verweise auf Frage 61: http://code.google.com/p/moq/issues/detail?id=61 Ich weiß nicht, ob es seit seiner Erhebung gepflegt wurde. –

+3

_ "Im Gegensatz zu C# hat VB [.NET] keine anonymen Methoden, nur Lambda-Ausdrücke (keine Möglichkeit, einen anonymen Aktionsdelegaten zu deklarieren)." _ - Vermutlich mit VB.NET 10 (freigegeben mit VS 2010 im April 2010), das ist nicht mehr wahr: Jetzt können Sie anonyme 'Sub'-In-Place-, sogar mehrzeilige, schreiben. - Ich stimme auch nicht mit der Terminologie "Lambda-Ausdruck" vs. "anonymer Aktionsdelegierter" überein. Sowohl an C# als auch an VB.NET sind anonyme Delegierte grundsätzlich die gleichen wie Lambda-Funktionen. nur die Syntax kann etwas anders sein. – stakx

1

AFAIK Typemock Isolator ist das einzige Tool, das VB.NET vollständig vortäuschen kann. Sie haben speziell dafür eine API erstellt.

+1

yep. Beispiel ist hier: http://site.typemock.com/vbpage/2009/9/10/unit-testing-vbnet.html – RoyOsherove