0

我正在尝试创建单元测试来测试我的 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例如和其他一些对象,其中这些对象可能非常大,这会产生连锁反应,它们需要创建物体等UserTask

有没有一种方法可以创建一个Activity对象但省略创建完全填充的对象,例如Task,User和其他大对象?

例如

def activity = new Activity(
        task: new Task(),
        user: new User(),
        ... and so on
        )

其中 Task 和 User 被模拟而不是创建完整的对象,例如

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
        )

因为这将为创建如此小而简单的测试带来相当大的开销。

4

1 回答 1

1

请参阅此发行说明,您必须手动指定Taskand Userin @Mockor @Build(build-test-data-plugin: 2.0.5)

于 2013-05-05T11:31:05.910 回答