サービス オブジェクト ( http://railscasts.com/episodes/398-service-objects ) を作成しました。これは、基本的に A と B の 2 つのモデルを作成し、B が A に属している場合にそれらの間の関連付けを設定し、A を返します (これは次に、アソシエーションが与えられた場合、A を介して B にアクセスできます)。
エラーが発生した場合は、エラー情報を含むハッシュを返します。このメソッドをテストしようとしているときに、モデル (成功した場合) またはエラー情報を含むハッシュの 2 種類の戻り値が考えられるという問題が発生しています。
これは設計が間違っていることを示していますか? 最初にテスト (TDD) すると、そのような設計上の問題を回避できることがわかっています。
それが問題であれば、無効な A モデルを返す必要があることはわかっています。モデル B が作成時にエラーをスローすると仮定すると、どうすれば無効な A モデルを返すことができるでしょうか?
エラー ハッシュを返すことが問題ない場合、このメソッドをテストしやすいように設計するにはどうすればよいでしょうか?