Рекомендуемые рамки тестирования для приложения Rails 2 со случайностью - PullRequest
0 голосов
/ 06 июня 2011

У меня есть приложение Rails 2.3.5, которое обслуживает карточную игру.Я был немного слаб в написании тестов для него (читай: я не написал ничего: смущенно :), и я хотел бы начать сейчас.

С прочтения другие вопросы, я думаю, что, вероятно, хочу использовать расширяющий Test :: Unit для тестирования модулей.

Я задавался вопросом об использовании Capybara, расширяющего RSpec, для функционального тестирования, но большинство пользователей взаимодействуют с приложением через POST, который, как я понимаю, Capybara не обрабатывает.

Поскольку этокарточная игра, мне явно нужна способность контролировать rand;Я также определенно нуждаюсь в фреймворке для работы с Javascript.

  1. Подходит ли Test :: Unit + Следует?
  2. Верно ли, что Capybara не может обрабатывать POST?Могу ли я обойти это?
  3. Есть ли лучший вариант вместо капибары?
  4. Могут ли эти методы справиться со случайностью, связанной с карточной игрой?Предположительно, по крайней мере для Test :: Unit, я могу просто позвонить srand на ранней стадии, чтобы починить генератор, но я не знаю, выполнимо ли это для Capybara / RSpec / что-нибудь еще.
  5. МожетКто-нибудь указывает мне на ресурсы, посвященные конкретно настройке Ifa, Capybara и RSpec для Rails 2.3.5?Немного сложно сказать, что конкретно относится к Rails 3, а что нет.
  6. Получу ли я что-нибудь от добавления Watir / Firewatir в смесь?

Я понимаю, что приведенные выше вопросымногообразие, но они в основном сводятся к "работает ли это, или у вас есть какие-либо лучшие предложения?"

1 Ответ

2 голосов
/ 07 июня 2011

Если большинство взаимодействий пользователей происходит через POST, это через API (в отличие от заполнения форм или что-то)?

Практически любая комбинация RSpec / Shoulda / Capybara / Test Unit / Rack :: Test может работать для вас в зависимости от ваших потребностей. Они все способны. Тем не менее, это мои рекомендации:

  • Если вы решили, что хотите провести интеграционное тестирование через HTML-страницы, используйте Cucumber и Capybara
  • Если вы решили, что хотите провести интеграционное тестирование через HTTP API, используйте RSpec и Rack :: Test
  • Вы, вероятно, хотите подделать случайность.
  • Вам, вероятно, не нужен Ватир / Файерватир.

Похоже, вы можете отправлять POST-запросы через некоторые драйверы Capybara:

http://suffix.be/blog/capybara-post-requests

Когда Rails перешел на 3.0, RSpec перешел на 2.0, поэтому по крайней мере для RSpec вы захотите RSpec и RSpec Rails 1.3.2.

Под "поддельной случайностью" я подразумеваю переопределение srand в ваших тестах, чтобы вы могли предсказуемо их запустить.

module Kernel
  def rand
    YourApp.rand
  end
end

module MyApp
  class << self
    attr_accessor :rand
  end
end

Затем, прежде чем пользователь нажмет кнопку, запустите определение шага, например «При случайном возвращении 6», которое установит MyApp.rand = 6.

...