Scala的BDD工具,支持可重用的参数化小黄瓜子句



是否有支持可重用参数化Gherkin子句的Scala BDD工具?

我希望能够有能力使用这样的规格:

Given number 4 is entered
When "+" is pressed
And number -1 is entered
And "*" is pressed
And number 2 is entered
And "=" is pressed
Then result is 6

并且我想为Gherkin子句定义一次不同参数的fixture,例如:

scenario("(4+(-1)) * 2 = 6") {
  given("number 4 is entered")
  when("'+' is pressed")
  and("number -1 is entered")
  and("'*' is pressed")
  and("number 2 is entered")
  and("'=' is pressed")
  then("result is 0")
}

给出如下的子句定义:

"number $number is entered" {
    calculator.enter(number)
}
"'$key' is pressed" {
    calculator.press(key)
}
"result is $number" {
    assert(calculator.getDisplayedNumber === number)
}

我看了ScalaTest和Specs手册,但没有找到这样的功能。ScalaTest似乎能够在不同的场景中重用定义的子句,但看起来它不是参数化的。

你知道有什么工具可以支持我想要的吗,或者是ScalaTest的一些扩展,或者是我自己扩展它的方法?

我们可以在specs2中找到下面的例子来实现Given When Then specs:https://github.com/etorreborre/specs2/blob/1.6/src/test/scala/org/specs2/examples/GivenWhenThenSpec.scala

最新更新