Императивные и декларативные шаги в Rspec - PullRequest
4 голосов
/ 12 августа 2010

Интересно, для чего нужны декларативные шаги в Rspec?

Вот пример кода из книги 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

Я не совсем понимаю картину.

Что я понял, так это то, что декларативное позволяет вам делать все, что вы хотите, пока проходит результат, а императив более многословен.

Однако я не чувствую, что получилСуть этого.

Может кто-нибудь объяснить это немного больше.Каковы различия и какую мне выбрать?

1 Ответ

8 голосов
/ 19 августа 2010

Декларативный путь - это путь вперед.

Обязательный параметр описывает фактические шаги пользовательского интерфейса, которые вы должны предпринять как пользователь, а не результаты, которые вы пытаетесь достичь.Если вы напишите свои сценарии таким образом, они станут очень хрупкими и их невозможно будет поддерживать.Представьте себе, если кто-то поставил поле подтверждения в этом императивном сценарии, и было 80 аналогичных сценариев, которые также требовали изменения.

При декларативных шагах вам нужно изменить его только в одном месте, где определен шаг;этот тот же декларативный шаг затем повторно используется для всех сценариев, которые в нем нуждаются.

...