例として、単純な抽出器Planex
を用意しています。この抽出器は.planファイルの文字列を取り出し、一緒に戻します。私は、その動作をかなり徹底的に定義した単体テストをいくつか持っています。私はこれを使用していますActor
を持ってケースクラスとエクストラクタをスカラーでモックまたはスタブするにはどうしたらいいですか?
object Planex {
def apply(metadata: String, plan: String) = {
String.format("%1$sPlan:\n%2$s", metadata, plan)
}
def unapply(str: String) = {
val ixPlanLabel = str indexOf "Plan:"
when(ixPlanLabel>=0) {
(str take ixPlanLabel, (str drop (ixPlanLabel+5)).trim)
}
}
}
:ここでは、抽出です。 PlanRepo上の私のテストから
class PlanRepo(env: {
val jsonFormats: Formats
val load:() => String
val planTarget: String => Unit
}) extends Actor {
implicit val jsonFormats = env.jsonFormats
def receive = {
case (metaData: String, plan: Plan) => {
val s = Planex(metaData,write(plan))
env.planTarget(s)
}
case r: PlanRequest => {
val Planex(metaData, planStr) = env.load()
self.channel ! (metaData, read[Plan](planStr))
}
}
}
、私はPlanex
を除いて、その依存関係のすべてに合格することができますよ。そのために、私はまだ具体的な抽出オブジェクトを使用しています。したがって、私のレポ・テストは実際には個別にテストされた動作をPlanex
としてテストしています。これを回避する方法はありますか?
私はこのドキュメントのjson部分の階層を定義するネストされたケースクラスのセットで同様の問題を抱えています - 私はお互いを分けることができません。
もちろんです。なぜ私はこれを考えなかったのか分からない。入れ子にされたケースクラスをスタブすることについての私の混乱は残っていますが、私はそれについて個別に質問します。 – traffichazard