【发布时间】:2015-02-13 06:47:55
【问题描述】:
我正在尝试为具有以下结构的 grails 控制器编写单元测试用例:
class MyController{
def save(){
def myDomain = new MyDomain(params)
business validation 1
business validation 2
myDomain.writedatasource.save()
business validation 3
business validation 4
}
}
由于单元测试不加载 Datasource.groovy,writedatasource 在单元测试期间不可用,因此“业务验证 3”和“业务验证 4”的测试用例失败,因为我得到
groovy.lang.MissingPropertyException:没有这样的属性:类的writedatasource:MyDomain
如何修改我的测试用例来测试验证场景 3 和 4?
测试用例很简单,如下所示:
void testSave(){
...setup...
controller.save()
assert conditions
....
}
【问题讨论】:
-
有趣的问题。如果您编写集成测试,您将不得不模拟数据源甚至更好
-
同意集成测试肯定会完成这项工作,但我们有几个这样的场景实例(几乎 80% 的组件),所以如果我们为每个场景编写集成测试,那么基本上不会有任何单元测试。即使我们模拟数据源,你如何将它附加到 myDomain 以便控制器可以使用它来使 myDomain.writedatasource.save() 工作。
标签: unit-testing grails