【发布时间】:2016-12-15 12:00:12
【问题描述】:
在为 Grails 3 中的某个类编写单元测试时,我可以使用 @TestFor 注释来指定我要测试的类。在我的单元测试中,如果我的被测类是控制器,则我有一个字段“控制器”,如果我正在测试服务,则有一个字段“服务”,我可以将这些字段用作“被测系统”。
我想知道@TestFor 在域类的测试中做了什么以及应该如何使用它。我找不到任何处理这种情况的文件。假设我有一个域“MyDomain”和一个测试“MyDomainSpec”,其开头如下:
@TestFor(MyDomain)
class MyDomainSpec extends Specification {
def setup() {
def doesntMatter = domain // just to check access to "domain"
最后一行已经给了我一个
org.codehaus.groovy.runtime.typehandling.GroovyCastException:无法将具有类“java.lang.Class”的对象“class MyDomain”转换为类“MyDomain”
这可能意味着 Grails 尝试使用表示 MyDomain 类的对象作为此类的实例。我想知道为什么会发生这种情况以及代码有什么问题?我的意思是,domainproperty 存在,它确实是有原因的,或者不是吗?如何使用仅在访问时引发异常的属性?
更新
显然,只有当域类中有一个字段 String name 时才会引发异常。我不知道这个领域有什么特别之处。会不会只是一个错误?
【问题讨论】:
-
这似乎是一篇有用的文章。他们在域类 christianoestreich.com/2012/11/… 上使用
@TestFor -
@zero01alpha 这本身就很有趣,谢谢。但关于 TestFor,他们只提到它使“mockForConstraintsTests”方法可用。
标签: unit-testing grails grails-domain-class