traits
このようなものから拡張されたいくつかのスタック可能をテストしたい:
trait Layer{
def write(s:String): String
}
それぞれが着信文字列を何らかの方法で処理し、次のレイヤーに渡します。次に例を示します。
trait TimeStampLayer {
abstract override def write(s:String) = System.nanotime + super.write(s)
}
私の考えは、そのようなフィクスチャを持つ基本テストクラスを書くことでした:
abstract LayerTest {
type L
val layer = new BaseLayer with L // BaseLayer would be one that does nothing
}
各テスト サブクラスはL
、そのような stackable で上書きされますtrait
。L
これはもちろん機能しません。なぜなら、それが特性であることを指定する制約がないからです。コンパイラを引用すると、
タイプ L は、混合する特性である必要があります
みたいなことも考えました
abstract LayerTest[L <: Layer] {
//...
}
class TimeStampLayerTest extends LayerTest[TimeStampLayer] {}
しかし、私は特性であることを強制することもできませんL
、または少なくとも方法がわかりません
型が特性であることを指定する方法はありますか?