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

Ale*_*rev 6 java bdd specs scala scalatest

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

我希望能够使用这些规格:

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
Run Code Online (Sandbox Code Playgroud)

而且我想用Gherkin子句定义夹具,只有一次参数不同,例如:

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")
}
Run Code Online (Sandbox Code Playgroud)

鉴于条款的定义如下:

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

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

您是否知道一些支持我想要的工具,或者例如ScalaTest的一些扩展,或者自己扩展它的方法有这样的结果?

Dav*_*vid 5

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

希望这会有所帮助.