我正在尝试创建用于测试我的grails服务的单元测试。我有以下测试
@TestFor(ActivityProcessorService)
@Mock([ActivityProcessorService, Activity])
class ActivityProcessorServiceTests extends GrailsUnitTestCase{
void setUp() {
}
void tearDown() {
// Tear down logic here
}
void testGenerateDescription() {
def activity = new Activity(
//new activity details
)
def service = mockFor(ActivityProcessorService)
def description = service.generateDescription(activity)
assert description == "something..."
}
}
我的问题是在创建Activity
对象并填充所有必填字段时,需要我创建其他几个对象,例如User
,Task
和其他一些对象,其中对象可能非常大,这会产生需要创建对象等的效果。
有没有办法可以创建Activity
对象,但省略了Task
,User
和其他大型对象等完全填充对象的创建?
E.g
def activity = new Activity(
task: new Task(),
user: new User(),
... and so on
)
其中任务和用户被模拟,而不是创建完整的对象,如
def activity = new Activity(
task: new Task(
title : "task title"
description : "task description"
... and so on
),
user: new User(
firstName : "john",
lastName : "smith",
... and so on
),
... and so on
)
因为这将为创建这么小而简单的测试带来相当大的开销。
答案 0 :(得分:1)
请参阅此release notes,您必须在Task
或User
(build-test-data-plugin:2.0)中手动指定@Mock
和@Build
。 5)