GroovyのテスティングフレームワークSpock Frameworkではthenの部分に合格条件を記述するが、一行で一つのbooleanを表現する必要がある。
JUnitのようにテストケース内に何を書いても良いフレームワークに慣れていると、どう書いていいかわからなかったりする。
以下に、thenに使えそうな表現をいくつか挙げてみる。
list.any { 条件 }
または
list.find { 条件 } != null
!list.any { 条件 }
または
list.find { 条件 } == null
listA.every { it.x in listB }
list.every { 条件 }
new File("パス").exists()
これは書くまでもないか…
new File("パス").text === """1行目
2行目
3行目
:
"""
""" """
でくくられた部分はGroovyのGStringなので、${変数名}
の形で変数も入れられる。
注意したいのは、文字列の開始部分。
"""\
とすると次の行から1行目の文字列を書いても最初の改行は無視されるのだが、これだとエラーがあった時にSpockがエラーを起こす。
つまり、
new File("パス").text === """\
1行目
2行目
3行目
"""
とも書けるが、テストが失敗した時にSpockはこの表現を1行に連結して表示しようとするので"""\1行目2行目3行目"""
のようになってしまい例外が発生してしまう。(そのうち直るとは思うが)