我想测试一些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
成为一种特质,或者至少不知道如何去做
有没有办法指定一个类型是一个特征?