У меня есть Profile
модель:Тестирование Rails belongs_to модели с Rspec
class Profile < ActiveRecord::Base
belongs_to :user
def fields_needed_for_completion
[self.name, self.city]
end
def completed?
!fields_needed_for_completion.any? { |f| f.nil? || f == "" }
end
end
Я пытаюсь определить, как писать модульные тесты для модели с belongs_to
ассоциации. В частности, я не уверен, как правильно настроить данные для тестов.
До сих пор, я соединил следующее:
describe Profile do
subject(:profile) { FactoryGirl.create(:profile) }
describe "fields_needed_for_completion" do
context "with all fields missing" do
it "returns all fields as nil" do
expect(profile.fields_needed_for_completion.all? &:blank?).to be true
end
end
end
describe "#completed?" do
#TO DO
end
end
два вопроса:
ли это прекрасно использовать FactoryGirl для создания объекта профиля вместо вызова
Profile.create
напрямую? Там нет установленных на заводе сейчас атрибуты (т.е. фабрика определяется следующим образом:factory :profile do; end
)Как вы можете видеть, модель
User
не используется вообще в этих спецификациях. Уместно ли тестировать модель отдельно, как это, хотя на практике она будет принадлежать пользователю? Или я должен как-то издеваться над Пользователем?
Несвязанный вопрос, но почему вы заново изобретаете проверки ActiveModel в своей модели профиля? – sevenseacat