У меня есть следующие модели:FactoryGirl и belongs_to ассоциации при тестировании Rspec
class Team < ActiveRecord::Base
# Setup accessible (or protected) attributes for your model
attr_accessible :name
validates_presence_of :name
belongs_to :user
end
Что тестируется:
describe Team do
before(:each) do
@attr = FactoryGirl.attributes_for(:team)
end
it "should belong to a user" do
@team = Team.create!(@attr)
@team.should belong_to(:user)
end
end
И у меня есть следующие заводы:
FactoryGirl.define do
factory :team do
name 'Dream Team'
sport
user
end
end
FactoryGirl.define do
factory :user do
name 'Test User'
last_name 'Last Name'
email '[email protected]'
password 'changeme'
password_confirmation 'changeme'
end
end
Когда Я тестирую спецификацию, я получаю следующий сбой:
1) Team should belong to a user Failure/Error: @team = Team.create!(@attr) ActiveRecord::StatementInvalid: SQLite3::ConstraintException: teams.user_id may not be NULL: INSERT INTO "teams" ("created_at", "name", "sport_id", "updated_at", "user_id") VALUES (?, ?, ?, ?, ?)
Почему? В документах говорится, что для установки ассоциации вы можете просто написать имя фабрики, в моем случае это пользователь.
Благодаря
Полагаю, вы используете либо 'musta-matchers', либо' замечательный'? – depa
Straight rspec-rails 2.13.0 –
Если я не ошибаюсь, я не думаю, что 'owned_to' является одним из стандартных сокетов в RSpec 2. Вам нужно что-то другое, чтобы иметь возможность написать это. https://www.relishapp.com/rspec/rspec-expectations/docs/built-in-matchers – depa