在Cucumber中,我如何在步骤定义类之间传递变量。我试图在Scala中实现。
环顾四周,我看到有人建议使用Guice或Picocontainer或任何其他DI框架。但是在Scala中没有真正遇到过一个例子。
例如,对于下面的示例,如何使用DI传递变量?
Provider.scala,
class Provider extends ScalaDsl with EN with Matchers with WebBrowser {
......
When("""I click the Done button$""") {
val doneButton = getElement(By.id(providerConnectionButton))
doneButton.click()
}
Then("""a new object should be created successfully""") {
// Pass the provider ID created in this step to Consumer definition
}
}
Consumer.scala,
class Consumer extends ScalaDsl with EN with Matchers with WebBrowser {
......
When("""^I navigate to Consumer page$""") { () =>
// providerId is the id from Provider above
webDriver.navigate().to(s"${configureUrl}${providerId}")
}
}
答案 0 :(得分:1)
您可以使用ThreadLocal解决问题
以下是解决方案的代码段。
object IDProvider{
val providerId = new ThreadLocal[String]
def getProviderId: String = {
providerId.get()
}
def setProviderId(providerId: String): Unit = {
providerId.set(providerId)
}
}
跨不同步骤定义访问providerID。您只需拨打 IDProvider.getProviderId
即可要设置providerID的值,只需调用 IDProvider.setProviderId( PROVIDER_ID )