私はPlayフレームワークとスカラの新機能です。コンパニオンオブジェクト内に依存関係を挿入しようとしています。以下のようなコンパニオンオブジェクトでオブジェクト内に依存関係を挿入する
case class Bar(foo: Int) {}
:
は、私のような、単純なケースクラスを持っているobject Bar {
val myDependency =
if (isTest) {
// Mock
}
else
{
// Actual implementation
}
val form = Form(mapping(
"foo" -> number(0, 100).verifying(foo => myDependency.validate(foo)),
)(Bar.apply)(Bar.unapply))
}
これは正常に動作しますが、それは実際にそれを行うにはきれいな方法ではありません。私はビルド時に依存関係を注入して、開発と生産におけるテストと異なる実際の実装時に異なるモックオブジェクトを注入できるようにしたいと考えています。
これを達成する最もよい方法は何ですか?
本当にありがとうございました。ありがとう! ケーキの線に沿って
私が思うに、この例では、プレイの枠組みの範囲内に十分収まる場合は、追加しようとすると、テストする必要があり
にあなたの例を変更しようとすることができますあなたが必要とするものは、いわゆる "ケーキパターン"です。 Daniel Spiewakのブログ記事がありましたが、見つけられないようです。しかし、これは参考にしてください(http://www.warski.org/blog/2011/04/di-in-scala-cake-pattern-pros-cons/)。 – MisterMetaphor
これはJonas Bonerの[オリジナル投稿](http://jonasboner.com/2008/10/06/real-world-scala-dependency-injection-di/) –