我正在尝试根据以下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.")
}
}
}
我试图从技术用户的角度进行写作。
这是对的吗?
答案 0 :(得分:2)
When
子句应该理想地描述动作而不是状态,因此编写
When("consumer client gets started")
代替When("Kafka server is not active")
更习惯。将Given-When-Then
视为Hoare triple可能会有所帮助,在这里,我们首先在操作(Given
)之前指定状态,然后在状态(When
)突变的操作之前指定状态,然后最后是行动后的预期状态(Then
)。
feature
和scenario
子句在理想情况下应该合理地使用,即使忽略了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'")
}
}