Подтвердить что ты не робот

Rails: тестирование названных областей с помощью RSpec

Я новичок в тестировании веб-приложений Rails и RSpec. Я работаю с устаревшим кодом и должен добавлять тесты. Итак, каков наилучший способ проверки искателей и названных областей с помощью RSpec?

Я нахожу в Google несколько подходов, но они не идеальны. Например:

http://paulsturgess.co.uk/articles/show/93-using-rspec-to-test-a-named_scope-in-ruby-on-rails

it "excludes users that are not active" do
    @user = Factory(:user, :active => false)
    User.active.should_not include(@user)
end

или

http://h1labs.com/notebook/2008/8/21/testing-named-scope-with-rspec

it "should have a published named scope that returns ..." do
  Post.published.proxy_options.should == {:conditions => {:published => true}}
end

Я нахожу лучший подход (ИМХО) в "Регламентах железнодорожных испытаний":

should_match_find_method :active_only { :active == true }

где should_match_find_method настраиваемый вспомогательный метод

4b9b3361

Ответ 1

Создатель RSpec недавно написал блог, он считает Validations - поведение, ассоциации - структура. Другими словами, он обнаруживает, что ассоциации (и области) не должны непосредственно тестироваться непосредственно. Тесты для них будут следовать поведению, которое вы хотите.

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

Ответ 2

Проблема с первым подходом заключается в том, что он фактически запрашивает базу данных. Он медленный и ненужный. Если вы не возражаете, вы можете безопасно использовать первый подход. Второй подход быстрый и понятный, поэтому я бы рекомендовал его.