2017-07-21 6 views
0

に動作しない場合、その後、私は以下のスポックテストスポックは、私はエラーが出るの相互作用チェックが

def "setXandSave saves the parcel with the chosen xValue"() { 
    given: 
    jpaRepository.findOne(parcelId) >> parcel 

    when: 
    repository.setXandSave(parcelId, xValue) 

    then: 
    1 * parcel.setX(xValue) 
    1 * jpaRepository.save(parcel) 

    where: 
    parcelId | parcel     | xValue 
    10L  | Mock(ParcelEntity.class) | "a" 
    20L  | Mock(ParcelEntity.class) | "B" 
} 

を持っている場合、与えられた「のための少なすぎ呼び出しを:..」行1 * parcel.setX(xValue)ため。

私は間違って何かやっているのですか、これはSpockの限界ですか?テストを実行中にsetXandSaveメソッドをデバッグし、実際にsetXが呼び出されました。 しかし、スポックは

Unmatched invocations (ordered by similarity): 

None 

も高く評価され、問題をデバッグする方法に関するすべてのヘルプを言います。

+0

:だから、我々はにあなたのテストを簡素化することができます。 –

+0

さらにコードを共有できますか?リポジトリと 'setXandSave'メソッドの作成Furhtermore、なぜあなたはどこのブロックにモックを作り、与えられたブロックにはいないのですか? –

答えて

1

あなたの場合はここにwhereブロックがある理由はありません。 2番目の列は重複を持ち、テーブルから抽出できます。テストの観点からも、入力10/'a'と '20'/'B'のペアには違いはありません。 `ブロック:私はよく覚えている場合は、その後、` `でjpaRepository.findOne(parcelId)>> parcel`をスタブする必要があります

def "setXandSave saves the parcel with the chosen xValue"() { 
    given: 
    def parcelId = 10L 
    def xValue = 'a' 

    and: 
    def parcel = Mock(ParcelEntity) 
    jpaRepository.findOne(parcelId) >> parcel 

    when: 
    repository.setXandSave(parcelId, xValue) 

    then: 
    1 * parcel.setX(xValue) 
    1 * jpaRepository.save(parcel) 
} 
関連する問題