当为Grails 3中的某个类编写单元测试时,我可以使用@TestFor
注释来指定我想测试的类。在我的单元测试中,如果我的测试服务是一个控制器和一个字段“服务”,并且我可以使用这些字段作为“测试中的系统”,那么我有一个字段“控制器”。@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中的“投对象类MYDOMAIN'上课“MYDOMAIN”
这可能意味着Grails的尝试使用表示MYDOMAIN类为这个类的一个实例的对象。我想知道为什么会发生这种情况,代码有什么问题?我的意思是,domain
属性存在,它确实是有原因的,不是吗?我怎样才能使用仅仅访问它时抛出异常的属性?
更新
显然引发异常只有在域类中有一个字段String name
。我不知道这个领域应该如此特别。它可能只是一个错误?
这似乎是一个有用的文章。他们在域类上使用'@ TestFor' http://www.christianoestreich.com/2012/11/domain-constraints-grails-spock-updated/ – zero01alpha
@ zero01alpha这是一个有趣的阅读本身,谢谢。但是关于TestFor,他们只提到它使得方法“mockForConstraintsTests”可用。 – Matthias