Spek2をGherkin形式で書いててテストをスキップしたいが、公式でその実装がないっぽいので拡張関数で実現した
fun FeatureBody.Scenario(description: String, skip: Skip, body: ScenarioBody.() -> Unit) {
delegate.group("Scenario: $description", skip = skip, defaultCachingMode = CachingMode.SCOPE, preserveExecutionOrder = true) {
body(ScenarioBody(this))
}
}
こんな拡張関数を追加すれば、 Scenario("スキップさせる", Skip.Yes("not impl"))
とSkipを指定できるようになる。
ただし、 Skip.No
を指定した場合、おそらくIntelliJのプラグインがパースに失敗して、
シナリオを指定しての実行ができなくなる。
object SkipTest : Spek({
Feature("テストのスキップ") {
Scenario("スキップしない", Skip.No) {
Given("ほげ") {
}
When("ふが") {
}
Then("もげー") {
}
}
Scenario("スキップさせる", Skip.Yes("not impl")) {
Given("ほげ") {
}
When("ふが") {
}
Then("もげー") {
}
}
}
})