2012-03-30 6 views
2

mockDomain bietet dynamische Methoden wie save(), validate(), ... für eine Domänenklasse.Ist es notwendig, die metaClass nach der Verwendung von mockDomain in Grails Unit Tests zu entfernen?

Ist es notwendig, die Meta-Klassen für jede Klasse zu entfernen, die ich mit mockDomain mockte?

class UserTests extends GrailsUnitTestCase { 

    protected void setUp() 
    { 
     super.setUp() 
     mockDomain User 
     mockDomain Address 
    } 

    protected void tearDown() 
    { 
     super.tearDown() 
     def remove = GroovySystem.metaClassRegistry.&removeMetaClass 
     remove User 
     remove Address 
    } 

} 

Antwort

3

Sie müssen das nicht tun. Die Methode "mockDomain" ruft registerMetaClass auf, wodurch die aktuelle metaClass gespeichert und durch eine neue ersetzt wird, sodass der Test die alte metaClass für tearDown wiederherstellen kann. Wenn Sie Methoden selbst zu einer MetaClass hinzufügen müssen, können Sie registerMetaClass aufrufen (bevor Sie natürlich Ihre Änderungen hinzufügen) und sobald es fertig ist, wird der Test die Bereinigung durchführen.

0

Nein. Aus Neugier, was würde Sie glauben machen, dass Sie das tun müssten?

+0

Eine Diskussion mit einem Arbeitskollegen. Ich hatte Recht, und es ist nicht notwendig –

+0

Ich hatte auch Recht, aber ich denke, die anderen Jungs Antwort war besser für Sie? – Gregg

+0

@Gregg: Ja, du hast Recht, und du warst zuerst. aber Antworten mit einer Erklärung sind in der Regel besser. –

Verwandte Themen