2

voidメソッドのspockを使用してパラメーター化されたテストをセットアップする方法がわかりません。これは、リンクリストの簡単なテストケースです。

@Unroll
def "should delete the element #key and set the list size to #listSize"(key, listSize) {
    given:
    list.insert(6)
    list.insert(12)
    list.insert(33)

    expect:
    def deletedKey = list.delete(key)
    list.size() == listSize

    where:
    key || listSize
    6   || 2
    12  || 2
    33  || 2
    99  || 3
}

このメソッドdelete()はvoidメソッドですが、明示的に戻り値を取得していない場合、テストは失敗しています。

これは実際に機能しています:

expect:
def deletedKey = list.delete(key)
list.size() == listSize

これはしませんが:

expect:
list.delete(key)
list.size() == listSize

テストレポートはnullについて不平を言う

Condition not satisfied:

list.delete(key)
|    |      |
|    null   12
com.github.carlomicieli.dst.LinkedList@5c533a2

この状況をどのように管理できますか?削除メソッドが呼び出された後、リストの状態をチェックして削除の結果をテストしたいと思います。

ありがとう、カルロ

4

1 に答える 1

2

ではなくwhenandを使用すると機能しますか?thenexpect

@Unroll
def "should delete the element #key and set the list size to #listSize"(key, listSize) {
    given:
    list.insert(6)
    list.insert(12)
    list.insert(33)

    when:
    list.delete(key)

    then:
    list.size() == listSize

    where:
    key || listSize
    6   || 2
    12  || 2
    33  || 2
    99  || 3
}
于 2012-11-01T09:47:49.703 に答える