Gaugeのtable parametersに関するメモ
このあたりの話
Gaugeにはいくつか特殊なパラメタが用意されていて、fileやtableというプレフィックスをつけて自動的にファイルを読み込ませたりすることができる。ただ、その中でいまいちドキュメントを読んでいて、意味が分からないものがあったので挙動の確認とメモを残しておく。 ドキュメントによると以下のように記述できると書いてある。そして、これはドキュメント上ではinline tableと呼ばれていて、スペシャルパラメタのCSVを読めと書いてあるのだけど、いまいち分からない。
code:spec.md
* Create the following projects
|project name| username |
|------------|----------|
| Gauge java | Daredevil|
| Gauge ruby | Iron Fist|
で、勘を働かせた結果@Step("Create the following projects <csv>")といった記述を行えば良いのでは思い至ったので試してみた。
code:steps.kt
import com.thoughtworks.gauge.Table
@Step("Create the following projects <csv>")
fun creatingProjects(projects: Table) {
projects.tableRows.forEachIndexed { idx, row ->
println("----- $idx -----")
row.tableCells.forEach {cell ->
println("${cell.columnName}: ${cell.value}")
}
}
}
code:output
----- 0 -----
project name: Gauge java
username: Daredevil
----- 1 -----
project name: Gauge ruby
username: Iron Fist
Java(Kotlinで上は書いているけど)の場合、com.thoughtworks.gauge.Tableというクラスで引数を取れば良いらしく、自前でCSVの文字列をパースするようなことをしなくてもいい感じになるらしい。というわけで、これでよいらしい。 もちろんspecファイル側は通常通り * Create the following projects <table:projects.csv> のような書き方をしてもよく、そのあたりはテストを書くときに何を優先したいか、によって使い分ければよいと思う。