ActiveRecord::Base
имеет большой старый API с множеством методов как для поиска, так и для сохранения объектов. Например, ваши объекты AR::B
могли быть созданы несколькими методами:
Foo.new(…)
Foo.create(…)
Foo.find( …)
Foo.find_by_sql(…)
Foo.find_[all_]by_*(…)
bar.foos
(ассоциации)
Точно так же рассматриваемый объект может быть сохранен несколькими различными методами:
foo.create
или foo .Создайте!
foo.save
или foo.save!
фу.update_attributes
или foo.update_attributes!
Теперь при написании модульных тестов рекомендуется заглушать вызовы внешних методов, чтобы ваш тест мог сосредоточиться на бизнес-логике рассматриваемого метода. Однако, когда дело доходит до работы с объектами AR::B
— например, в модульных тестах контроллера — кажется, что вы должны зафиксировать один из вышеперечисленных методов, когда на самом деле бизнес-логика метод обеспокоен, это не должно быть важно, что вы выберете.
Нужно ли так тесно связывать поведение вашего метода с его реализацией, или я упускаю что-то простое?