我是否遵循 BDD 规范?
Do I follow BDD specification?
我正在尝试编写我的第一次基于 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.")
}
}
}
我试图从技术用户的角度来写。
这是正确的吗?
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 up和当它down时,那么我们可以将规范细化如下:
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'")
}
}
我正在尝试编写我的第一次基于 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.")
}
}
}
我试图从技术用户的角度来写。
这是正确的吗?
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 up和当它down时,那么我们可以将规范细化如下:
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'")
}
}