ActiveRecord::Base
オブジェクトの検索と保存の両方のための複数のメソッドを備えた大規模な古い API があります。たとえば、AR::B
オブジェクトはいくつかのメソッドからインスタンス化されている可能性があります。
Foo.new(…)
Foo.create(…)
Foo.find(…)
Foo.find_by_sql(…)
Foo.find_[all_]by_*(…)
bar.foos
(協会)- …もちろん、関連付けに関するファインダ メソッド
同様に、問題のオブジェクトは、いくつかの異なる方法で永続化される場合があります。
foo.create
またfoo.create!
foo.save
またfoo.save!
foo.update_attributes
またfoo.update_attributes!
ここで、単体テストを作成するときは、外部メソッドの呼び出しをスタブ化して、テストで問題のメソッドのビジネス ロジックに集中できるようにすることをお勧めします。ただし、AR::B
コントローラー単体テストなどでオブジェクトを操作する場合は、上記のメソッドのいずれかにコミットする必要があるように思われますが、実際にはメソッドのビジネス ロジックに関する限り重要ではありません。あなたが選ぶ。
メソッドの動作をその実装とこれほど緊密に結合する必要がありますか、それとも単純なものが欠けていますか?