[英]Cannot mock grails domain class
有人请解释为什么在使用新的MockFor(..)模拟时,域类的行为会有所不同? 我使用grails 2.4.1。 我已经创建了域类GTest:
class GTest {
static constraints = {
}
String amethod() {
return "GTest.amethod"
}
}
和一个普通的类DTest:
class DTest {
String amethod() {
return "DTest.amethod"
}
}
这是一个常规测试:
class GroovyJUnitTest {
@Test
void testDTestAmethod() {
def mock = new MockFor(DTest)
mock.demand.amethod {
return "Mock DTest"
}
mock.use {
def dtest = new DTest()
// Here dtest.metaClass=groovy.mock.interceptor.MockProxyMetaClass@...
def ret = dtest.amethod()
// This assertation successes
assertEquals "Mock DTest", ret
}
}
@Test
void testGTestAmethod() {
def mock = new MockFor(GTest)
mock.demand.amethod {
return "Mock GTest"
}
mock.use {
def gtest = new GTest()
// Here dtest.metaClass=groovy.lang.ExpandoMetaClass@...
def ret = gtest.amethod()
// This assertation fails
assertEquals "Mock GTest", ret
}
}
}
那么,这个问题是如何以编程方式模拟Domain类? 谢谢您的解释。
您应该使用grails.test.mixin.TestFor
注释测试。
@grails.test.mixin.TestFor(MyDomainClass)
class MyDomainClassTest {
// ...
}
有关更多详细信息,请参见http://grails.org/doc/latest/guide/testing.html#unitTestingDomains 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.