私は関数をテストしようとしていますが、私がテストしている関数は、スタブしたいtraits関数を呼び出します。私はオブジェクトをモックすることができないので、ScalaMockを使ってこの関数をスタブすることはできません。ScalaMockオブジェクトの継承されたTrait関数ScalaTest
trait[A<:CommonReturn] commonTrait[A] {
def commonFunction(s:String):(String,String) = {
("Hello","World")
}
def testMe(s:String) : A
}
この特性は、commonTraitを実装し、共通戻りの特定のサブタイプを返す多くのオブジェクトによって拡張されます。
object ob extends commonTrait[ConcreteType] {
override def testMe(s:String){
val(x,y) = commonFunction(s)
val z = "unique logic"
ConcreteType(x,y,z)
}
}
従って私は今、しかし私はそのためcommonFunctionスタブすることはできません、OBオブジェクトをモックに見えることはできませんob.testMeテストしようとしています。
これは私のアーキテクチャによるものですか?または、スケマockでオブジェクトをモックし、スケートを使用することは可能ですか?
val mocked = mock[ob]
(mocked.commonFunction _).expect(*).returning("test","test")
これはコンパイルされません。
commonFunctionがあなたの例でtestMeの外にある場合、同じ問題がありますか? – Barry