2015-11-03 57 views
0

我使用specs2作为我的测试框架。 我想生成一个在测试中可用的uniq密钥。specs2 - 如何在测试本身内部和内部使用相同的变量?

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 
    } 
} 

找不到任何好办法做到这一点.. 任何想法?

回答

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

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 
    } 
}