【发布时间】:2014-06-27 13:57:51
【问题描述】:
请解释一下为什么域类在使用 new MockFor(..) 模拟时表现不同? 我使用 grails 2.4.1。 我已经创建了域类 GTest:
class GTest {
static constraints = {
}
String amethod() {
return "GTest.amethod"
}
}
还有一个 groovy 类 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 类? 谢谢你的解释。
【问题讨论】:
标签: unit-testing grails junit mocking