Вот сообщение в блоге о том, почему это не следует делать:
http://blog.davidchelimsky.net/2012/02/12/validations-are-behavior-associations-are-structure/
Подводя итог, ассоциации - это структура вашего приложения. RSpec предназначен для тестирования поведения. Так что, вероятно, будет лучше, если вы напишите тесты для поведения, полученного из home_team или away_team.
Возьмем, к примеру, если вы хотите имя команды home_team. Было бы лучше, если бы вы написали такой метод:
def home_team_name
home_team.name
end
Это поведение, которое класс событий запрашивал бы у home_team. Вы можете написать спецификацию, такую как:
describe '#home_team_name' do
before do
@home_team = Team.new(:name => 'The Home Team')
@event = Event.new(home_team_id: @home_team.id)
end
it 'should return the name of the home team' do
@event.home_team_name.should == 'The Home Team'
end
end
Это был бы отличный пример тестирования поведения ассоциации, без непосредственного тестирования структуры вашего приложения.
Кроме того, Rails ожидает, что home_team относится к классу «Team», и нет необходимости тестировать каркас, он хорошо протестирован и задокументирован. Единственный способ, которым я мог бы это сделать, - это временно, если бы вам нужно было лучше понять, как работают ассоциации.