我遵守BDD规范吗?

时间:2019-04-20 20:45:38

标签: scala bdd scalatest

我正在尝试根据以下BDD风格编写人生测试的第一次:

final class SapRsSpec extends FeatureSpec
  with Matchers
  with GivenWhenThen {

  feature("KAFKA") {
    scenario("Technical user starts SAP RS") {
      Given("Consumer client gets started")
      When("KAFKA server is not active")
      Then("message `Can not connect ot KAFKA` appears.")

    }


  }

}  

我试图从技术用户的角度进行写作。
这是对的吗?

1 个答案:

答案 0 :(得分:2)

When子句应该理想地描述动作而不是状态,因此编写

When("consumer client gets started")

代替When("Kafka server is not active")更习惯。将Given-When-Then视为Hoare triple可能会有所帮助,在这里,我们首先在操作(Given)之前指定状态,然后在状态(When)突变的操作之前指定状态,然后最后是行动后的预期状态(Then)。

featurescenario子句在理想情况下应该合理地使用,即使忽略了Given-When-Then主体。仅声明feature("Kafka")似乎太宽泛。指定的功能实际上是Kafka和复制服务器之间的关系,而不仅仅是Kafka本身。

假设要指定的功能是在两种情况下复制服务器向Kafka的分发,即当Kafka处于启动状态和处于关闭状态时,我们可以按以下方式优化规格:

  feature("Replication server's distribution to Kafka") {
    scenario("Replication server's distribution when Kafka is DOWN") {
      Given("Kafka server is NOT active")
      When("consumer client gets started") 
      Then("print message 'Failed to connect to Kafka'")
    }

    scenario("Replication server's distribution when Kafka is UP") {
      Given("Kafka server is active")
      When("consumer client gets started") 
      Then("print message 'Successfully connected to Kafka'")
    }
  }