2009-04-28 7 views
7

J'aime vraiment le framework Moq Mocking. Je l'ai utilisé sur plusieurs projets. Malheureusement, un de mes clients nous demande d'utiliser VB.Net. Pas ma préférence, mais bon, .Net est .Net, non?Expériences utilisant moq avec VB.Net

J'ai entendu dire que moq a quelques problèmes avec VB. Est-ce vrai? Est-ce le cas, quelles sortes de problèmes? Je m'attendrais à ce que cela fonctionne bien étant donné la nature agnostique du langage .Net.

Dois-je envisager d'utiliser un autre cadre de simulation pour une utilisation avec VB?

Répondre

6

Le problème principal de VB.net en ce qui concerne les frameworks moqueurs est que, contrairement à C#, VB n'a pas de méthodes anonymes, seulement des expressions Lambda (pas moyen de déclarer un délégué Action anonyme).

Ceci limite considérablement les possibilités. Il existe également un problème connu avec les propriétés avec paramètres. En outre, la syntaxe de la langue pour lambdas ne conduit pas à quelque chose d'aussi propre que C#, la lisibilité (pas de flammes s'il vous plaît, je suis un utilisateur VB et certaines fonctions C# me manquent tous les jours). l'attraction pour Moq.

Le seul cadre de test que je connaisse qui a fait quelque chose en ce qui concerne VB est TypeMock. Ils ont essayé de concevoir quelque chose qui se confond avec la syntaxe VB.

+0

Quel est le problème avec les propriétés paramétrées? –

+0

Je me réfère au numéro 61: http://code.google.com/p/moq/issues/detail?id=61 Je ne sais pas si cela a été pris en compte depuis qu'il a été soulevé. –

+3

_ "Contrairement à C#, VB [.NET] n'a pas de méthodes anonymes, seulement des expressions Lambda (pas moyen de déclarer un délégué Action anonyme)." _ - Je suppose avec VB.NET 10 (sorti avec VS 2010 en avril 2010), ce n'est plus le cas: vous pouvez désormais écrire des sous-titres anonymes, même multi-lignes. - Je suis également en désaccord avec la terminologie "expression lambda" contre "délégué anonyme". Dans C# et VB.NET, les délégués anonymes sont fondamentalement la même chose que les fonctions lambda; seule la syntaxe peut être légèrement différente. – stakx

1

AFAIK Typemock Isolator est le seul outil qui peut complètement se moquer de VB.NET. Ils ont fait une API spécialement pour ça.

+1

yep. exemple est ici: http://site.typemock.com/vbpage/2009/9/10/unit-testing-vbnet.html – RoyOsherove