在scalatest夹具上初始化val

时间:2013-05-03 21:01:08

标签: scala scalatest

我正在编写我的第一个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的每个方法之前将其初始化?

1 个答案:

答案 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 =>

     }
  }
}