Question

J'ai lu ceci: http://martinfowler.com/articles/mocksArentStubs.html Mes concepts sur un talon et une maquette sont claires. Je comprends la nécessité des cadres d'isolement comme moq, RhinoMocks et aime créer un objet fantaisie. Comme se moque, de participer à Verfication réelle des attentes. Mais pourquoi besoin de ces cadres-nous pour créer des talons. Je préférerais rouler sur un talon créé à la main et l'utiliser dans divers appareils.

Était-ce utile?

La solution

Avez-vous essayé d'utiliser une bibliothèque comme Rhino Mocks pour un jour ou deux avant de décider que les talons roulés à la main est une meilleure option?

@chibacity: L'idée des bibliothèques moqueurs est à éviter mises en œuvre. Si je ne dois définir une seule valeur de la propriété, je ne veux pas créer une implémentation ensemble d'une interface. code d'appel comme

MyObj obj = MockRepository.GenerateStub<MyObj>();
obj.MyProperty = 33;

semble beaucoup plus simple pour moi. Sans parler des situations où je seulement besoin d'un talon stupide pour être passé en paramètre où je ne me soucie pas ce qui lui arrive (donc pas mis en place est nécessaire).

Cela ne signifie pas que vous ne devriez pas rouler vos propres talons pour des scénarios plus complexes, mais dans mon expérience de tels cas sont rares.

Ma recommandation est d'apprendre à utiliser une bonne bibliothèque se moquant (comme Rhino) avec tous ses petits trucs, mon pari est que vous apprendrez vite à apprécier les raisons de son existence.

Autres conseils

A strictement parler, non, vous ne pas besoin un cadre d'isolation pour créer des talons. En fait, Microsoft a même un Cadre Stubs uniquement génère des talons, pas se moque.

Je ne l'ai jamais écrit un cadre d'isolement moi-même, mais il semblerait que une fois que vous avez moqueur objet en place, les talons serait un jeu d'enfant à créer. Cela pourrait être la principale raison pour laquelle la plupart / tous les cadres d'isolement comprennent des objets stub.

En ce qui concerne votre dernière phrase ( « je préférerais rouler sur un talon créé à la main et l'utiliser dans divers accessoires »), avez-vous réellement essayé sur un projet d'envergure? Bien sûr, vous avez peut-être une interface avec une seule méthode qui retourne un bool annulable -. Vous suffit d'écrire trois stubs pour cette interface, et ce n'est pas si mauvais

Mais une fois que vous commencez à regarder des dizaines des interfaces et des classes à bout, il devient tout simplement un gâchis de garder une trace de tous les différents talons. Si vous utilisez chaque stub dans plusieurs tests, vous pouvez certainement justifier d'écriture main un bout et de le mettre de côté; mais lorsque vous utilisez un seul talon particulier une ou deux fois, il est beaucoup plus facile de le garder comme un talon « anonyme » généré directement par le cadre, par souci de simplicité.

Après avoir utilisé des cadres moqueurs pendant un certain temps, j'ai trouvé que ma conception de code prend une pente totalement différente. Cette inclinaison semble être dirigé plus dans un style d'interaction. En d'autres termes, je deviens plus intéressé par les messages et les comportements que l'État. Mes objets deviennent des services plutôt que des objets stateful comme cela se produirait lors de l'utilisation des talons. Avec des talons, je finis par l'état passant autour d'autres objets.

Le problème pour moi devient alors plus de créer des couches d'abstraction. Je dois à la question où quelque chose doit être en interaction à certains niveaux. Cela contribue à la création de ce « dernier moment responsable ». Donc, je finis avec des objets qui ont les producteurs et les consommateurs. Et tout le reste est seulement des canaux de message.

J'espère que cette aide.

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