2008-11-10 3 views

Répondre

1

Dépend. Comment l'usine est-elle obtenue/utilisée par le code testé?

S'il est explicitement instancié dans les méthodes que vous testez, ou s'il s'agit d'une fabrique statique, vous ne pourrez pas le rogner.

S'il est injecté dans l'objet testé, vous pouvez créer et injecter la fabrique raillée avant d'exécuter le test.

Le fait de se moquer de l'usine devrait être assez facile avec JMock. À partir de votre exemple de code, il semble que ce soit une classe et non une interface. Vous devez donc utiliser la version cglib de JMock et la classe MockObjectTestCase dans le package cglib pour JMock 1 ou ClassImposteriser pour JMock 2.

Une fois moqué, vous pouvez le faire renvoyer votre implémentation stubbed (ou même un faux FormatService) lorsque vous définissez les attentes pour la méthode getService().

0

Mockery mockery = nouveau JUnit4Mockery() {{setImposteriser (ClassImposteriser.INSTANCE);}};

final FormatServiceFactory factory = mockery.mock (FormatServiceFactory .class);

context.checking (nouvelles attentes() {{ oneOf (usine) .getService(), la volonté (returnValue (nouveau FormatServiceMock())); }});

Questions connexes