как я могу структурировать этот интеграционный тест рельсов (с musta), чтобы "визит" не вызывался каждый раз? - PullRequest
0 голосов
/ 29 июля 2011

Используя Test :: Unit и musta, я хотел написать тест, в котором ожидания очевидны, и поэтому я придумал следующее:

context "logged in as seller" do
  setup do
    login @seller
    visit offer_path(@seller_offer)
  end

  should "not see feedback" do
    assert has_no_selector?("#feedback")
  end

  should "see 'cancel offer' button" do
    assert has_selector?("#cancel_offer_button")        
  end

  should "see 'comment' button" do
    assert has_selector?("#comment_button")
  end

  should "not see 'accept offer' button" do
    assert has_no_selector?("#accept")
  end

end

Проблема в том, что перед тем, как каждый блок «должен» будет перезапущен, то есть двухстраничные запросы (один для помощника входа в систему, а другой для вызова «посещения»).

Я пытался сделать

context "logged in as seller" do
  login @seller
  visit offer_path(@seller_offer)

  should ...

Но это, похоже, не работает ... Очевидно, я мог бы сделать:

context "logged in as seller" do
  should "have desired results" do
    login @seller
    visit offer_path(@seller_offer)

    # should see 'cancel offer' button
    assert has_selector?("#cancel_offer_button")        

    # should see 'comment' button"
    assert has_selector?("#comment_button")

    etc..

Но это не совсем то, что я ищу.

-patrick

1 Ответ

1 голос
/ 29 июля 2011

Для начала: если вы хотите, чтобы ваши тесты тестировали только одну вещь, как это и должно быть, решение этой проблемы не существует, и вы уже делаете правильные вещи.

Однако, естьальтернативные подходы: вместо того, чтобы выполнять полный интеграционный тест и тестировать представление (внешний вид каждого элемента на странице) в интеграционном тесте, я обычно делаю следующее:

  • тестирование контроллера,без представлений, желательно без попадания в базу данных (с использованием заглушек).
  • проверить представления изолированно: там я проверяю, что все отображается правильно
  • в интеграционных тестах:
    • используйте огурец
    • используйте подход по принципу щелчка по счастливому пути (ошибки и тому подобное были проверены отдельно)
    • сосредоточиться на частях JavaScript

Надеюсь, это поможет.

...