Повторное использование тестов RSpec в других тестах - PullRequest
1 голос
/ 27 ноября 2011

Я очень строг в отношении разметки HTML и следую строгому соглашению о кодировании форм, списков и т. Д.

Я бы хотел включить в мои тесты RSpec тест многократного использования, который быпозвольте мне вызвать тест формы из любого другого теста и направить его непосредственно на страницу или URL-адрес, который я тестирую.

Примерно так:

# spec/helpers/form_tester.rb
describe FormTester
  it "should check to see if all the text fields have an ID prefix of 'input-'" do
    ... @form should be valid ...
    should be true
  end
end

# spec/requests/user_form.rb
describe UserForm
  it "should validate the form" do
    @form = find(:tag,'form')
    # call the FormTester method        
  end
end

Любые идеи о том, как сделатьэтот?Я использую Rails 3.1, с RSpec, Capybara и FactoryGirl.

Ответы [ 2 ]

9 голосов
/ 27 ноября 2011

Использовать общие примеры .В вашем случае, что-то вроде этого может работать:

# spec/shared_examples_for_form.rb
shared_examples 'a form' do
  describe 'validation' do
    it 'should be validated' do
      form.should_be valid
    end
  end
end

# spec/requests/user_form.rb
describe UserForm
  it_behaves_like 'a form' do
    let(:form) { find(:tag, 'form') }
  end
end

Также можно передавать параметры в общие примеры и помещать общие примеры в spec/support.Просто прочитайте документацию .

1 голос
/ 28 ноября 2011

Общие примеры великолепны, но у вас здесь есть как минимум две серьезные проблемы.

Во-первых: почему вы вообще даете идентификаторы полей формы? У вас уже есть очень хорошие селекторы: просто используйте input[name='whatever']. И даже если вы присваиваете им идентификаторы, не ставьте для них префикс: input#whatever или просто #whatever, вероятно, более разумный селектор в вашем CSS, чем #input-whatever. Будучи слишком точным в отношении имен селекторов, вы, скорее всего, затрудняете написание своих CSS и JavaScript, чем они должны быть.

Второе: не используйте RSpec для проверки ваших просмотров. RSpec в своих лучших проявлениях, когда ограничивается моделями. Огурец лучше всего подходит для пользователя.

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