When
в идеале должно описывать действие, а не состояние, поэтому написание
When("consumer client gets started")
вместо When("Kafka server is not active")
более идиоматично. Может быть полезно думать о Given-When-Then
как о тройке Хоара , где мы сначала указываем состояние перед действием (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'")
}
}