Как лучше всего запустить модульное и функциональное тестирование веб-сайта Ruby Rails? - PullRequest
11 голосов
/ 27 сентября 2008

Я тестирую веб-сайт Ruby Rails и хотел начать с модульного и функционального тестирования.

Ответы [ 5 ]

6 голосов
/ 27 сентября 2008

Огурец и RSpec достойны внимания. Они поощряют тестирование в поведенческом стиле, основанном на примерах.

RSpec - библиотека для тестирования на уровне модулей:

describe "hello_world"
  it "should say hello to the world" do
    # RSpec comes with its own mock-object framework built in,
    # though it lets you use others if you prefer
    world = mock("World", :population => 6e9)
    world.should_receive(:hello)
    hello_world(world)
  end
end

Он имеет специальную поддержку Rails (например, он может тестировать модели, представления и контроллеры изолированно) и может заменить механизмы тестирования, встроенные в Rails.

Cucumber (ранее известный как RSpec Story Runner) позволяет вам написать высокоуровневые приемочные тесты на (довольно) простом английском языке, которые вы можете показать (и согласиться) с клиентом, а затем запустить их:

Story: Commenting on articles

  As a visitor to the blog
  I want to post comments on articles
  So that I can have my 15 minutes of fame

  Scenario: Post a new comment

    Given I am viewing an article
    When I add a comment "Me too!"
    And I fill in the CAPTCHA correctly
    Then I should see a comment "Me too!"
4 голосов
/ 27 сентября 2008

Похоже, вы уже написали свое приложение, поэтому я не уверен, что вы получите огромный бонус от использования RSpec сверх Test::Unit.

В любом случае, независимо от того, какой из них вы выберете, вы быстро столкнетесь с другой проблемой: управлением приборами и пробными образцами (т.е. вашими тестовыми «данными»). Итак, взгляните на Стоит и Фабрика .

4 голосов
/ 27 сентября 2008

Моя рекомендация (серьезно) - просто обойти встроенный модуль рельсов / функциональное тестирование и перейти прямо к RSpec .

Для встроенных рельсов используется фреймворк Test::Unit, который поставляется с ruby ​​и является более или менее прямым портом JUnit / NUnit / AnyOtherUnit.
Я нашел эти фреймворки довольно утомительными и раздражающими, что привело к общей апатии к написанию модульных тестов, что явно не то, что вы пытаетесь достичь здесь.

RSpec - это другой зверь, сосредоточенный вокруг описания того, что ваш код должен делать, вместо того, чтобы утверждать, что он уже делает . Это изменит ваш взгляд на тестирование, и вы получите гораздо больше удовольствия от этого.

Если я звучу как фанатик, то только потому, что я действительно верю, что RSpec - это хорошо. Я прошел путь от раздражения и усталости от модульного / функционального тестирования до убежденного сторонника этого, в значительной степени исключительно из-за rspec.

1 голос
/ 29 сентября 2008

Вы также можете протестировать веб-интерфейс с помощью плагина Firefox, например http://selenium.openqa.org/

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

0 голосов
/ 29 сентября 2008

Даже если приложение уже написано, я бы порекомендовал использовать RSpec over Test :: Unit для простого факта, что ни одно приложение никогда не было завершено. Вы хотите добавить функции и рефакторинг кода. Получение правильной тестовой привычки на раннем этапе поможет сделать эти изменения менее болезненными

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...