我在模拟服务类以保存域的单元测试中。最初,我的 Controller 方法如下所示:
def save(Long organizationId, Convention convention) {
conventionService.save(organizationId, convention)
if (convention.hasErrors()) {
response.status = HttpStatus.UNPROCESSABLE_ENTITY.value()
respond convention.errors
} else {
response.status = HttpStatus.CREATED.value()
respond convention
}
}
通常,这是可行的,因为Java是通过引用传递的,所以传递给save方法的
convention
在整个方法中都是相同的convention
对象。但是,在模拟conventionService.save
方法时,按引用传递不起作用。调整我的方法以解决此问题:def save(Long organizationId, Convention convention) {
convention = conventionService.save(organizationId, convention)
if (convention.hasErrors()) {
response.status = HttpStatus.UNPROCESSABLE_ENTITY.value()
respond convention.errors
} else {
response.status = HttpStatus.CREATED.value()
respond convention
}
}
允许我的测试通过,因为
convention
对象正是我的模拟所期望的:1 * service.save(1, _) >> new Convention(
id: 1,
name: 'Con 1',
description: 'This is a pretty cool convention, everyone should go',
startDate: new Date(),
endDate: new Date()+10,
organization: organization)
我的问题是,这是预期的行为还是我应该报告的错误?
最佳答案
这是预期的行为。这不是您应该报告的错误。