Etapas imperativas e declarativas em Rspec

Gostaria de saber o que é imperativa vs etapas declarativas no Rspec.

Aqui está um exemplo de código do livro Rspec:

Scenario: transfer money (declarative)
Given I have $100 in checking
And I have $20 in savings
When I transfer $15 from checking to savings
Then I should have $85 in checking
And I should have $35 in savings

Scenario: transfer money (imperative)
Given I have $100 in checking
And I have $20 in savings
When I go to the transfer form
And I select "Checking" from "Source Account"
And I select "Savings" from "Target Account"
And I fill in "Amount" with "15"
And I press "Execute Transfer"
Then I should see that I have $85 in checking
And I should see that I have $35 in savings

Ainda não entendi bem.

O que entendi é que declarativo permite que você faça o que quiser, desde que o resultado passe, e o imperativo é mais detalhado.

No entanto, não acho que tenha entendido isso.

Alguém poderia explicar isso um pouco mais. Quais são as diferenças e qual devo escolher?

questionAnswers(1)

yourAnswerToTheQuestion