私の「通知」モデルにはメソッドがあります(通知モデルと連絡モデルの両方があり、多くに属しています):
`def self.update_contact_association(contact, notification)
unless contact == nil
notification.contacts.clear
c = Contact.find(contact)
notification.contacts << c
end
end`
特定の通知と連絡先の間の関連付けを更新します。通知オブジェクト (行) と連絡先 ID のリストを取ります。単一の連絡先 ID 1 と 4 の更新の ID を持つ通知が与えられた場合、このメソッドは正常に機能し、テーブルは次のようになります。
notification_id contact_id
4 1
このメソッドを適切にテストするために単体テストを作成しようとすると、問題が発生します。これまでのところ、私は持っています:
'test 'update_contact_association' do
notification = Notification.find(4)
contact = Contact.find(1)
Notification.update_contact_association([contact.id], notification)
'end
テスト メソッドを実行してもエラーは発生しませんが、テスト データベースは上記の例のように更新されず、単に空白になります。コントローラーが行っていることを模倣するには、保存または更新メソッドを使用する必要があると確信していますが、その方法はわかりません。アサーションを記述できるように、テーブルを適切に更新する単体テストが必要なだけです。これと非常に似ている/同じであるいくつかの方法をテストする必要があるため、どんなアイデアでも大歓迎です。