Можно ли проверить, что форма отправляется на соответствующую ссылку? - PullRequest
1 голос
/ 18 марта 2012

Я использую Ruby on Rails 3.2.2, cucumber-rails-1.3.0, rspec-rails-2.8.1 и capybara-1.1.2.Используя Capybara, я хотел бы проверить, отправляет ли HTML form правильный URL;то есть, чтобы проверить, является ли связанный action="<PATH>" HTML "тег" / "свойство" тем, что я ожидаю.

Например, в следующем коде я хотел бы проверить, если <PATH>равен /users (полный HTML action="/users"), где маршрут Ruby on Rails равен new_user_path:

<form method="post" id="css_form_id" action="/users">
  ...
</form>

В настоящее время, чтобы проверить, присутствует ли форма на странице,Я использую следующий код:

Then /^I should see the form$/ do
  page.should have_selector('form#css_form_id', :visible => true)
end

Можно ли проверить, отправляет ли form правильный URL-адрес?Если так, как я могу это сделать?О чем вы советуетесь?

1 Ответ

2 голосов
/ 18 марта 2012

Я думаю, что вам не хватает фундаментальной концепции поведенческого развития.Вас действительно волнует, как называется форма или куда она отправляет данные?Не тогда, когда вы говорите о поведении вашего приложения на высоком уровне.Вы должны проверить, что приложение делает то, что должно делать при отправке формы.Вместо проверки того, по какому пути он публикуется, вам следует проверить, что при отправке формы результат будет ожидаемым.Похоже, что вы создаете нового пользователя с помощью этой формы, поэтому я бы проверил, что новый пользователь был создан с параметрами, которые вы отправили:

When I create the following user:
  | Name  | Some Person      |
  | Email | person@email.com |
Then I should have the following user:
  | Name  | Some Person      |
  | Email | person@email.com |

Ваш шаг подтверждения будет тогда просто проверять, что пользователь имеетсохраняется между шагами

Then /^I should have the following user:$/ do |user_table|
  expected_user = user_table.rows_hash
  user = User.find_by_email(expected_user['Email'])
  user.name.should == expected_user['Name']
end

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

...