specs2 - 如何在测试本身的内部和内部使用相同的变量?

时间:2015-11-03 08:28:14

标签: scala unit-testing mockito specs2

我使用specs2作为我的测试框架。 我想生成一个可在测试中使用的uniq密钥。

def around[R: AsResult](r: => R): Result = {
   val uniqueToken = before()
   try AsResult(r)(uniqueToken)
   finally after(uniqueToken)
}

"foo" should {
   "bar" in {
     do something with uniqueToken
   }
}

无法找到任何好办法。 有什么想法吗?

2 个答案:

答案 0 :(得分:1)

你可以写这个

class MySpec extends Specification with ForEach[Token] {
  "foo" should {
     "do something" in { token: Token =>
        ok
     }
  }

  def foreach[R : AsResult](f: Token => R): Result = {
    val token = createToken

    try AsResult(f(token))
    finally cleanup(token)
  }
}

记录在案here

答案 1 :(得分:0)

你应该从这个伪代码中得到一般的想法:

class Around[R: AsResult](r: => R) {
   val uniqueToken = before()

   try AsResult(r)(uniqueToken)
   finally after(uniqueToken)
}

"foo" should {
   "bar" in new Around(r) {
     do something with uniqueToken
   }
}