Как использовать спички для тестирования полиморфной ассоциации? - PullRequest
16 голосов
/ 09 марта 2011

Я использую musta-matchers с рельсами и создаю модель под названием "comments" и другую модель под названием "post".Комментарии полиморфны.

Когда я тестирую с помощью совпадений musta в посте, подобном этому

    it {should have_many(:comments)}

, оно получает это сообщение

Ожидается, что в сообщении будет ассоциация has_many, называемая комментариями (Комментарийне имеет внешнего ключа post_id.)

В моей модели комментариев у меня есть

  belongs_to :commentable, :polymorphic => true

Как я могу проверить мою полиморфную ассоциацию, чтобы сообщение могло иметь много комментариев?

ps В документации по musta matcher сказано, что она поддерживает полиморфные ассоциации.

1 Ответ

8 голосов
/ 17 июля 2011

Вам не нужно делать ничего особенного в вашем тесте для should, он должен просто работать.На вашей модели поста убедитесь, что вы установили опцию :as:

has_many :comments, :as => :commentable

. Это позволит гарантировать, что рельсы будут использовать правильные имена столбцов commentable_id и commentable_type вместо post_id.

...