我正在编写我的第一个Funspec
并希望使用相同的夹具进行多次测试,但仍希望在每个测试中使用新实例。为此,我使用BeforeAndAfter
特征。我的问题是我不知道如何将被测对象的初始化引用到before
方法,并仍然将其存储在val
中以使其成为最终。目前的情况如下:
class CarTest extends FunsSpec with BeforeAndAfter{
var car:Car = _
before {
car = Car("BMW i3")
}
describe("A car") {
it("can accelerate") { //do some stuff with car }
it("can break") { //do some other stuff with car}
}
}
所以,问题是:是否有某种方法可以使car
成为val
并在使用ScalaTest
的每个方法之前将其初始化?
答案 0 :(得分:4)
您可以尝试使用这样的灯具:
import org.scalatest.FunSpec
import org.scalatest.BeforeAndAfter
import org.scalatest.fixture
case class Car(model:String)
class CarTest extends fixture.FunSpec{
type FixtureParam = Car
def withFixture(test: OneArgTest) {
val car = Car("BMW")
test(car)
}
describe("A car") {
it("can accelerate") { car =>
}
it("can break") { car =>
}
}
}