1
ドメインを保存するサービスクラスを模擬しているユニットテストがあります。もともと、私のコントローラメソッドは、このように見えた:Javaはメソッドを通して同じconvention
オブジェクトでsaveメソッドに渡さconvention
ので、参照渡しですのでGrails単位テスト合格で参照が機能しません
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
}
}
一般的に、これは動作します。しかし、conventionService.save
メソッドを疑似すると、参照渡しが機能しません。 convention
オブジェクトが、私は私のモックから期待していものですので
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
}
}
は私のテストに合格することができます::
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)
私の質問は、この予想される動作である場合、またはこれを説明するために私の方法を調整します私が報告しなければならないバグ?
ありがとうございました。私はそれほど多くのことを前提にしていましたが、確信していました私は数週間でこれを説明しなければならないでしょう。 – Gregg
「私は数週間でこれを説明しなければならないだろう」 - それをどうやって行うのか知っていますか? –
私はそう信じています。私は一般的な嘲笑に関するそれの基本的な論理を理解しています。私はちょうど私の期待を操作していたSpockやGroovy/Grailsの魔法がないことを確かめたいと思っていました。 – Gregg