2009-08-26 8 views
1

Im Moment spiele ich mit Griffon. Bis auf die Tests läuft alles reibungslos.Wie kann ich eine Griffon-Anwendung mit easyb effizient testen?

Ich möchte die separaten Controller-Methoden testen, ohne die gesamte Griffon-Anwendung zu starten. Um dies zu tun, scheint es mir, dass ich die Ansicht und das Modell, die in der Steuerung verwendet werden, verspotten. Wegen der Spott mit Expando-Objekten, die Tests für die Controller-Methoden und Aktionen mit easyb werden zu lang.

Hier ist ein einfaches Beispiel:

MyProjectView.groovy

application(title: 'MyProject', 
    pack: true, 
    locationByPlatform: true, 
    iconImage: imageIcon('/griffon-icon-48x48.png').image, 
    iconImages: [imageIcon('/griffon-icon-48x48.png').image, 
      imageIcon('/griffon-icon-32x32.png').image, 
      imageIcon('/griffon-icon-16x16.png').image] 
) { 
tableLayout { 
tr { 
    td(align: "CENTER") { 
    textField(id: 'textfield', 
      text: "Hello") 
    } 
} 

tr { 
    td(align: "CENTER") { 
    button(text: "check", 
      actionPerformed: controller.checkForGreeting 
    ) 
    } 
    } 
} 
} 

MyProjectController.groovy

class MyProjectController { 
def model 
def view 

void mvcGroupInit(Map args) { 
} 

def checkForGreeting = { evt = null -> 
    return view.textfield.text == "Hello" 
} 

MyProjectModel.groovy

class MyProjectModel {} 

der easyb Test: MyProje ctStory.Story

scenario "Hello Check", { 
    def view 
    MyProjectController controller = new MyProjectController() 

given "A view with 'Hello' in the textfield", { 
    view = new Expando() 
    def textfield = new Expando() 
    textfield.text = "Hello" 
    view.textfield = textfield 
    controller.view = view 
} 
then "checkForGreeting should return true", { 
    controller.checkForGreeting().shouldBe(true) 
} 
} 

Gibt es eine einfachere Möglichkeit, Griffon Controller Methoden zu testen? Vielleicht durch mit einer besseren Lösung für die Aussicht verspotten?

Antwort

1

In Griffon gibt es keine mockenden Plugins/Einrichtungen wie die, die man im Moment in Grails finden kann. Das Testen von Controllern wird normalerweise in Integrationstests durchgeführt (deshalb platziert die create-mvc-Vorlage einen Test unter Test/Integration).

Spotteinrichtungen sind für eine zukünftige Version nicht ausgeschlossen.

Verwandte Themen