Question

Je suis tombé sur ce projet open source Fake It facile , et je dois admettre que, il semble très intéressant, mais j'ai mes doutes, quelles sont les différences entre FIE faux et dire moq Mocks? Est-on mieux pour des utilisations particulières?

EDIT:

Qu'est-ce à propos de ce nouveau cadre qui ferait mieux que dire Moq?

Était-ce utile?

La solution

Pour être clair, j'ai créé FakeItEasy donc je vais dire certainement pas si un cadre est mieux que l'autre, ce que je peux faire est de souligner quelques différences et motiver pourquoi Je créé FakeItEasy. Fonctionnellement il n'y a pas de grandes différences entre Moq et FakeItEasy.

FakeItEasy n'a pas « verifiable » ou « attentes » il a des affirmations cependant, ceux-ci sont toujours explicitement déclarés à la fin d'un test, je crois que cela rend les tests plus faciles à lire et à comprendre. Il aide également les débutants à éviter plusieurs affirme (où ils fixeraient les attentes sur de nombreux appels ou objets simulés).

J'ai utilisé Rhino Mocks avant et j'ai bien aimé, surtout après la syntaxe AAA a été introduit comme je l'ai fait l'API couramment de Moq mieux cependant. Ce que je n'aimais pas avec Moq était « l'objet simulé » où vous devez utiliser mock.Object partout, j'aime le Rhino-approche avec « naturelle » se moque mieux. Chaque instance se présente comme une instance normale du type truqué. Je voulais le meilleur des deux mondes et aussi je voulais voir ce que je pouvais faire avec la syntaxe quand j'avais les mains tout à fait gratuitement. Personnellement, je (évidemment) pense que je créé quelque chose qui est un bon mélange avec le meilleur de deux mondes, mais c'est assez facile quand vous êtes debout sur les épaules de géants.

Comme il a été mentionné ici l'une des principales différences est dans la terminologie, FakeItEasy a d'abord été créé pour introduire TDD et moqueur aux débutants et d'avoir à se soucier des différences entre les simulacres et les talons à l'avant (la façon dont vous auriez dans Rhino) n'est pas très utile à mon avis.

J'ai mis beaucoup d'accent sur les messages d'exception, il devrait être très facile de dire ce Whent mal dans un test regardant juste un message d'exception.

FakeItEasy a quelques caractéristiques de ce que les autres extensibilité cadres ne disposent pas, mais ceux-ci ne sont pas encore très bien documentés.

FakeItEasy est (je l'espère) un peu plus forte dans les classes se moquant qui a des arguments du constructeur car il a un mécanisme de résolution des valeurs factices à utiliser. Vous pouvez même spécifier vos propres définitions de valeur factice en mettant en œuvre un DummyDefinition (Of T) dans votre projet de test, il sera automatiquement repris par FakeItEasy.

La syntaxe est une différence évidente, que l'on est mieux est en grande partie une question de goût.

Je suis sûr qu'il ya beaucoup d'autres différences que j'Oublier maintenant (et pour être honnête, je ne l'ai jamais utilisé Moq en moi-même la production si ma connaissance de celui-ci est limitée), je pense que ce sont les différences les plus importantes que .

Autres conseils

La terminologie utilisée dans les tests peuvent être un peu déroutant. La meilleure source expliquant la différence entre les différents concepts est Mocks Ne sont pas Stubs par Martin Fowler. En résumé, faux est un terme générique qui décrit les talons et se moque.

La terminologie moqueuse peut être source de confusion - et est parfois tout à fait unintuitive

.

Par conséquent, beaucoup de gens ont proposé une simple, une nouvelle terminologie, où vous avez seulement fakes , se moque et .

Faux est le terme générique pour tous les types possibles de doubles de test, peu importe d'où ils viennent et comment ils sont utilisés.

Au-delà, Fictifs ne se distinguent que le long d'une seule dimension: si elles influencent les résultats de test ou non; ou, en d'autres termes: si vous devez définir des valeurs de retour pour le faux, qui sont en quelque sorte utilisé lors de l'exécution de test, ou il est un « silencieux » objet qui ne sert qu'à remplir certaines dépendances <. br>

Stub il est que ' silencieux ' objet.

Mock il participe activement dans l'exécution des tests

Au-delà, il n'y a aucune autre distinction -. Qui a sûrement ses mérites historiques, mais est maintenant en grande partie contre-intuitif et academical, et il est le genre de concepts obscurcissant vraiment importants du développement piloté par les tests

En ce qui concerne la comparaison entre Moq et FakeItEasy : les deux cadres sont en grande partie le même à partir d'un point de vue conceptuel - les différences ne sont que dans l'API et la terminologie ...

Thomas

De mon point de vue faux ne sera pas annule le Moc par exemple, j'utilise Faux Dev Magic DAL faux et couche d'affaires et dans le même temps, je l'utilise Mock dans MVC pour HttpContext

var repoistory = new FakeRepository<ProductTypeForm, VendorForm>();
            repoistory.Save(productTypeForm);
            this.FillDropDown(new FakeRepository<VendorForm>());

Dans le code précédent Faux Dev Magic sauver le ProductTypeForm et récupérer le VendorForm de faux Dev magie et le lier à ProductTypeForm, cette opération de sauvegarde peut être permanente

Pour plus d'inforamtion à propos de Fake Dev magique voir sur CodePlex: http://devmagicfake.codeplex.com

Test Te cette méthode, nous avons à raillent le contexte HTTP

var context = new Mock<HttpContextBase>();
var request = new Mock<HttpRequestBase>();

Je travaille avec de faux et de faux

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top