Question

Je suis en train d'écrire une unité spock test qui teste une méthode du contrôleur.

L'action du contrôleur testé instancie un nouvel objet d'instance de domaine et appels valident sur elle avant qu'elle ne sauve. Y at-il de toute façon de se moquer de l'appel à domainInstance.validate (), donc je peut le faire revenir tout ce que je veux? Ou dois-je cacher instanciation et de sauver derrière une méthode de service pour y parvenir?

Je le fais de cette façon, parce que dans le cadre d'un test unitaire pour une contrôleur, les contraintes d'un objet de domaine ne devrait pas être impliqué. Je teste les ailleurs (dans les MyDomainClassTests, évidemment). Si je a voulu prendre en compte les dans mon test serait une intégration test.

Était-ce utile?

La solution 2

Après un certain temps je suis venu à la conclusion que ce que je voulais est assez délicat. Si vous êtes dans un scénario où vous ne le faites pas Vous pour utiliser mockDomain(), vous pouvez ajouter une méthode de métaclasse groovy et de mise en œuvre (return true ou false, selon ce que vous voulez)

Si vous faire besoin mockDomain () parce que vous devez instances préexistantes simulacres vous êtes hors d'options, au moins pour l'instant parce que mockDomain () et de jongler avec les méthodes de métaclasse mockDomain fournit en fait la volonté pas mélanger.

Autres conseils

Si vous ne placez pas la validate sur l'instance de domaine lui-même, mais plutôt dans un service, vous pouvez laisser votre contrôleur prendre un service dans son constructeur (ou plutôt une interface d'un service). Laissez cette poignée de service la validation.

Maintenant, pour votre unittest de ce contrôleur, vous passeriez dans une maquette de cette interface (service) au contrôleur et configurer la maquette de retour que vous voulez.

Pour .net je peux recommander Moq ( http://code.google.com/p/moq / )

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