Llo*_*olz 7 testing tdd grails grails-orm
是否有"最佳实践"或事实标准,在单元/功能测试中应该测试多少GORM功能?
我的看法是,应该将大多数域测试作为功能测试,以便您获得完整的grails环境.但是你测试什么?插入,更新,删除?您是否测试了约束,即使它们可能已经通过grails发布进行了更彻底的测试?
或者你只是假设GORM做它应该做的事情并转移到应用程序的其他部分?
小智 5
我的一般规则是测试我写的东西.因此,如果我编写自定义方法(或闭包),那么我将对它们进行单元测试.这条规则也意味着我会在编写约束之后测试约束.为此我在GrailsUnitTestCase中使用mockForConstraintsTests()方法.
示例约束块:
static constraints = {
location(blank:true, nullable:true)
make(blank:false, nullable:false)
name(blank:false, nullable:false)
serviceTag(nullable:true)
purchaseDate(blank:false, nullable:false)
checkedDate(blank:false, nullable:false)
warrantyExpirationDate(nullable:true)
notes(blank:true, nullable:true)
}
Run Code Online (Sandbox Code Playgroud)
我会有以下约束单元测试:
void test_null_constraints_are_checked() {
mockForConstraintsTests(Hardware)
def hardware = new Hardware()
assertFalse hardware.validate()
assertEquals 4, hardware.errors.getFieldErrorCount()
assertEquals "nullable", hardware.errors["name"]
assertEquals "nullable", hardware.errors["checkedDate"]
assertEquals "nullable", hardware.errors["purchaseDate"]
assertEquals "nullable", hardware.errors["make"]
}
Run Code Online (Sandbox Code Playgroud)
这将立即捕获我的约束上的任何拼写错误.
我不测试域中的保存,创建,更新,删除; 如果这些失败那么我就有更大的问题!