На данный момент я играю с Грифоном. Все работает очень гладко, за исключением тестирования.
Мне нравится тестировать отдельные методы контроллера, не запуская все приложение Griffon. Для этого мне кажется, что я должен издеваться над представлением и моделью, которые используются в контроллере. Из-за насмешек с объектами Expando тесты методов контроллера и действий с easyb становятся слишком длинными.
Вот простой пример:
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 {}
простой тест: MyProjectStory.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)
}
}
Есть ли более простой способ протестировать методы контроллера Griffon? Возможно, используя лучшие решения для насмешки над видом?