Я пытаюсь протестировать модель, которая имеет неявную ассоциацию has_many, и у меня возникли некоторые трудности.
У меня есть таблица A со столбцом B_ID, где B - это в основном внешний ключ - за исключением того, что в моей базе данных нет таблицы B или активного класса записей, связанного с объектом B. Есть также таблица C, в которой есть столбец a B_ID.
В модели для таблицы C имеем:
# implicit has_many :alphas
def alphas
Alpha.where(:b_id => b_id).order(:xyz)
end
Эта структура базы данных имеет смысл для данных, которые у меня есть, и не тестовый код работает нормально.
Мой тестовый код почти работает, и я надеюсь, что мне не хватает чего-то простого.
У меня есть фабрики, определенные для A и C, и у меня есть тест:
a1 = Factory(:alpha, :b_id => 123, :xyz => 100)
a2 = Factory(:alpha, :b_id => 123, :xyz => 200)
c1 = Factory(:c, :b_id => 123)
puts c1.alphas.count
puts c1.alphas.first
c1.alphas.first.should == a1
Вывод:
2
nil
<test fails>
Изменение количества объектов A, которые разделяют B_ID, приводит к изменению c1.alphas.count, но я не могу на самом деле оказаться внутри неявной ассоциации и вернуть объект A - вместо этого я всегда получаю ноль. В моей модели C есть другие методы, которые я не могу протестировать, потому что эти методы должны обращаться к полям отдельных объектов A.
Кто-нибудь знает, что происходит за кулисами здесь, или что я мог бы сделать, чтобы обойти это? Благодаря.