#ruby-on-rails #unit-testing #testing #automated-tests
#ruby-on-rails #модульное тестирование #тестирование #автоматизированные тесты
Вопрос:
Я организовывал свои тестовые примеры по иерархии контроллера / действия / сценария или модели / метода / сценария. Это выглядит естественно и понятно. Но я обнаружил, что мне пришлось повторно настраивать тестовые данные для разных действий и методов для одного и того же сценария. Хотя я могу уменьшить избыточность кода путем повторного использования кода. Но я думаю, что все еще тратится время, особенно для того, чтобы машина снова и снова настраивала эти тестовые данные. Кто-нибудь организует эти тестовые примеры по сценариям? Каков наилучший способ организации тестовых примеров?
Комментарии:
1. Используете ли вы test::unit или rspec?
2. Я использую rspec. Зависит ли это от тестовой среды? Я думал, что это общий вопрос.
Ответ №1:
Если этот вопрос касается повторения при генерации тестовых данных, вам, вероятно, следует обратить внимание на следующие драгоценные камни, которые помогут вам генерировать тестовые данные:
- factory_girl
- Изготовление
Если этот вопрос касается задержки при выполнении теста, вам, вероятно, следует обратиться к 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, помогают сократить затраты на настройку тестовых данных, мне все еще интересно, смогу ли я организовать эти тесты так, чтобы они могли использовать один и тот же набор тестовых данных. Но теперь я думаю, что это, вероятно, действительно зависит от приложения, над которым мы работаем.