现在我正在和Griffon一起踢球。除了测试之外,所有的工作都很顺利。
我喜欢在不启动整个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控制器方法?也许是通过使用更好的解决方案来模拟视图?
发布于 2009-08-28 06:09:28
目前,在Griffon中还没有像Grails那样的模拟插件/工具。测试控制器通常是在集成测试中完成的(这就是为什么create-mvc模板将测试放在测试/集成下)。
然而,模拟功能在未来的版本中也不是不可能的。
https://stackoverflow.com/questions/1335541
复制相似问题