Сортировка.
- это способ организации тестов, но это не так. Он ведет себя так, как предполагалось в оригинальных интеграционных тестах Rails, но его гораздо проще использовать. Большой выигрыш в том, что ваша сессия поддерживается прозрачно на протяжении всего Scenario
.
Еще одна вещь, которая происходит с Cucumber - это то, что вы (должны быть) тестируете с точки зрения браузера или клиента, использующего ваш код. Если вы хотите, вы можете использовать шаги для создания объектов и установки состояния, но обычно вы хотите, чтобы ваши шаги проходили через движения, необходимые для достижения этого состояния.
Например, вы могли бы сделать это:
Given /I have a user account/ do
@user = Factory.create(:user)
# ... more user set up
end
Но вы, вероятно, должны сделать что-то вроде этого:
Given /I have a user account/ do
visit new_user_url
fill_in "user_login", :with => "some name"
fill_in "user_password", :with => "foo"
# ... whatever else your sign up page needs
end
И, конечно, вы можете передать аргументы любому из этих шагов, чтобы дать вашему вызывающему коду более детальный контроль над поведением шага.
То, что я обычно делал со своими тестами, выглядит следующим образом.
- Я использую musta, но с rspec тоже все хорошо.
- Я пишу свои тесты с отрицательной аутентификацией (т. Е. Ожидается отказ в доступе) как функциональные тесты Rails.
- Я пишу свои тесты с положительной аутентификацией (т. Е. Пользователи делают то, что должны делать) в качестве функций Cucumber.
И, конечно, я до сих пор пишу модульные тесты Rails для своих моделей, библиотек, помощников и т. Д.