gpt4 book ai didi

scala - 在 Cucumber 步骤定义之间传递变量

转载 作者:行者123 更新时间:2023-12-02 00:01:11 29 4
gpt4 key购买 nike

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

消费者.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)

关于scala - 在 Cucumber 步骤定义之间传递变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40369551/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com