在 Cucumber 步骤定义之间传递变量
Passing variables between Cucumber step definitions
在 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}")
}
}
你可以使用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)
在 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}")
}
}
你可以使用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)