Каков наилучший способ организации функциональных и модульных тестовых примеров Rails?

#ruby-on-rails #unit-testing #testing #automated-tests

#ruby-on-rails #модульное тестирование #тестирование #автоматизированные тесты

Вопрос:

Я организовывал свои тестовые примеры по иерархии контроллера / действия / сценария или модели / метода / сценария. Это выглядит естественно и понятно. Но я обнаружил, что мне пришлось повторно настраивать тестовые данные для разных действий и методов для одного и того же сценария. Хотя я могу уменьшить избыточность кода путем повторного использования кода. Но я думаю, что все еще тратится время, особенно для того, чтобы машина снова и снова настраивала эти тестовые данные. Кто-нибудь организует эти тестовые примеры по сценариям? Каков наилучший способ организации тестовых примеров?

Комментарии:

1. Используете ли вы test::unit или rspec?

2. Я использую rspec. Зависит ли это от тестовой среды? Я думал, что это общий вопрос.

Ответ №1:

Если этот вопрос касается повторения при генерации тестовых данных, вам, вероятно, следует обратить внимание на следующие драгоценные камни, которые помогут вам генерировать тестовые данные:

Если этот вопрос касается задержки при выполнении теста, вам, вероятно, следует обратиться к spork.

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

Проверяет все методы, один за другим, в модульных тестах. И проверяет все сценарии в функциональных тестах.

spec/unit/user_spec.rb

 describe "#generate_password_salt" do
  user = User.new(password: 'foobar')
  user.generate_password_salt.should == '1231asdas'
end
  

spec/functional/user_spec.rb

 describe "when creating new user" do
  it "should generate password salt" do
     ...
  end      
end
  

Комментарии:

1. На самом деле мой вопрос заключается в том, существуют ли общие шаблоны для организации этих модульных тестов / функциональных тестов. Выглядит естественным организовать их по методам (действиям), а затем по сценариям. Но я обнаружил, что мне всегда приходилось снова и снова настраивать похожие наборы тестовых данных. Хотя такие инструменты, как Factory Girl, помогают сократить затраты на настройку тестовых данных, мне все еще интересно, смогу ли я организовать эти тесты так, чтобы они могли использовать один и тот же набор тестовых данных. Но теперь я думаю, что это, вероятно, действительно зависит от приложения, над которым мы работаем.