Unit testing 在grails中重写域属性的setter是否正确?

Unit testing 在grails中重写域属性的setter是否正确?,unit-testing,grails,gorm,grails-domain-class,Unit Testing,Grails,Gorm,Grails Domain Class,重写域类中属性的setter和getter是个好主意吗?假设我们有一个具有name属性和大写名称的域类,我们在其中存储清理名称: class Person { String name String capitalizedName String setName(String name){ this.name = name this.searchName = name.replaceAll("[^A-Za-z0-9 ]", "").trim(

重写域类中属性的setter和getter是个好主意吗?假设我们有一个具有name属性和大写名称的域类,我们在其中存储清理名称:

class Person {
    String name
    String capitalizedName

    String setName(String name){
        this.name = name
        this.searchName = name.replaceAll("[^A-Za-z0-9 ]", "").trim().toUpperCase()
    }
}
如果我重写setter并在单元测试中尝试使用dynamic finder:

Person.findByName('Whatever')
我得到

java.lang.IllegalArgumentException: Property [name] is not a valid property of class [com.test.Person]
但在运行时,它工作得很好


我可以修改域类的getter和setter吗?实现上述行为的最佳方式是什么

setter的返回类型应为
void

 void setName(String name){
        this.name = name
        this.searchName = name.trim().replaceAll("[^A-Za-z0-9 ]", "").replaceAll(" +", " ").toUpperCase()
 }

setter的返回类型应为
void

 void setName(String name){
        this.name = name
        this.searchName = name.trim().replaceAll("[^A-Za-z0-9 ]", "").replaceAll(" +", " ").toUpperCase()
 }

我没想到返回类型会是原因,但我试过了,它确实很重要。Thx,没有注意到。看起来我的代码库有很多这样的问题。我没想到返回类型会是原因,但我试过了,这很重要。Thx,没有注意到。看起来我的代码库有很多这样的问题。