我如何在 Grails 2.4.5 中使用复合 id 模拟这个对象?
How do I mock this object with composite id in Grails 2.4.5?
import groovy.transform.EqualsAndHashCode
@EqualsAndHashCode(includes = ['action', 'reason'])
class MyObject implements Serializable {
String action
String reason
String description
static mapping = {
table name: "my_object"
version false
id composite: ["action", "reason"], generator: 'assigned'
cache usage: "read-only"
action column: "prog_action_c"
reason column: "prog_reason_c"
description column: "descr_c"
}
}
我尝试在我的单元测试中模拟这个对象,如下所示:
.....
def setup() {
..
mockDomain(MyObject,[
[
action : 'ACT1',
reason : 'REAS1',
description : 'First reason'
],
[
action : 'ACT2',
reason : 'REAS2',
description : 'Second reason'
]
])
def myObject = MyObject.first()
}
...
当我使用 findAll() 或 first() 查询对象时,我得到空列表或 null
应该如何模拟这个对象?
简短的回答是我们不能在 grails 2.4.5 中以这种方式模拟对象我们如何模拟是:定义一个方法来在你的 controller/service 无论你正在测试什么class。然后监视 class 测试,并将方法模拟为 return 任何你想要的域对象。
import groovy.transform.EqualsAndHashCode
@EqualsAndHashCode(includes = ['action', 'reason'])
class MyObject implements Serializable {
String action
String reason
String description
static mapping = {
table name: "my_object"
version false
id composite: ["action", "reason"], generator: 'assigned'
cache usage: "read-only"
action column: "prog_action_c"
reason column: "prog_reason_c"
description column: "descr_c"
}
}
我尝试在我的单元测试中模拟这个对象,如下所示:
.....
def setup() {
..
mockDomain(MyObject,[
[
action : 'ACT1',
reason : 'REAS1',
description : 'First reason'
],
[
action : 'ACT2',
reason : 'REAS2',
description : 'Second reason'
]
])
def myObject = MyObject.first()
}
...
当我使用 findAll() 或 first() 查询对象时,我得到空列表或 null
应该如何模拟这个对象?
简短的回答是我们不能在 grails 2.4.5 中以这种方式模拟对象我们如何模拟是:定义一个方法来在你的 controller/service 无论你正在测试什么class。然后监视 class 测试,并将方法模拟为 return 任何你想要的域对象。