2015-11-03 3 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 
    } 
}