2016-11-06 4 views
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) 

私の質問は、この予想される動作である場合、またはこれを説明するために私の方法を調整します私が報告しなければならないバグ?

答えて

1

私の質問は、この予期した動作または私が と報告するべきバグですか?

これは予想される動作です。これは報告すべきバグではありません。

+0

ありがとうございました。私はそれほど多くのことを前提にしていましたが、確信していました私は数週間でこれを説明しなければならないでしょう。 – Gregg

+0

「私は数週間でこれを説明しなければならないだろう」 - それをどうやって行うのか知っていますか? –

+0

私はそう信じています。私は一般的な嘲笑に関するそれの基本的な論理を理解しています。私はちょうど私の期待を操作していたSpockやGroovy/Grailsの魔法がないことを確かめたいと思っていました。 – Gregg

関連する問題