gpt4 book ai didi

unit-testing - 有没有一种不太臃肿的方法来测试 grails 中的约束?

转载 作者:行者123 更新时间:2023-12-02 13:51:43 25 4
gpt4 key购买 nike

有没有一种不太臃肿的方法来测试约束?在我看来,这样的代码太多,无法测试约束。

class BlogPostTests extends GrailsUnitTestCase {

protected void setUp() {
super.setUp()
mockDomain BlogPost
}

void testConstraints() {
BlogPost blogPost = new BlogPost(title: "", text: "")
assertFalse blogPost.validate()
assertEquals 2, blogPost.errors.getErrorCount()
assertEquals "blank", blogPost.errors.getFieldError("title").getCode()
assertEquals "blank", blogPost.errors.getFieldError("text").getCode()

blogPost = new BlogPost(title: "title", text: ObjectMother.bigText(2001))
assertFalse blogPost.validate()
assertEquals 1, blogPost.errors.getErrorCount()
assertEquals "maxSize.exceeded", blogPost.errors.getFieldError("text").getCode()
}
}

最佳答案

我建议不要测试 getErrorCount(),因为您会使测试变得脆弱(当您添加其他约束时,您必须记住更新 new 的每个实例BlogPost() 测试用例中的任何位置)。只需检查 hasErrors()

除此之外...对于每个约束,您需要生成一些违反它的测试数据,调用验证例程并对错误进行断言。这是您需要的代码。

重构一些方法来删除重复项。示例:

private void assertConstraintWorks(clazz, fieldName, testData, expectedErrorCode) {
def instance = clazz.newInstance((fieldName): testData)
assertFalse instance.validate()
assertTrue instance.hasErrors()
assertEquals expectedErrorCode, instance.errors?.getFieldError(fieldName)?.code
}

void testConstraints() {
assertConstraintWorks BlogPost, 'title', '', 'blank'
assertConstraintWorks BlogPost, 'text', '', 'blank'
assertConstraintWorks BlogPost, 'text', ObjectMother.bigText(2001), 'maxSize.exceeded'
}

关于unit-testing - 有没有一种不太臃肿的方法来测试 grails 中的约束?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2899483/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com