Как эффективно протестировать приложение Griffon с помощью easyb?

На данный момент я играю с Грифоном. Все работает очень гладко, за исключением тестирования.

Мне нравится тестировать отдельные методы контроллера, не запуская все приложение 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? Возможно, используя лучшие решения для насмешки над видом?


person Community    schedule 26.08.2009    source источник


Ответы (1)


В Griffon нет имитирующих плагинов/средств, подобных тем, которые вы можете найти в Grails на данный момент. Тестирование контроллеров обычно выполняется в интеграционных тестах (поэтому шаблон create-mvc помещает тест в тест/интеграцию).

Тем не менее, средства имитации не исключены для будущего выпуска.

person aalmiray    schedule 28.08.2009