2016-11-01 3 views
3

В 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}") 
    } 
} 
+1

Вы должны уточнить свой вопрос упомянуть Scala, поскольку речь идет о Scala конкретный. Я также задал бы этот вопрос в списке рассылки Cucumber, префикс вашего объекта с помощью [scala]. Удачи – diabolist

+0

Вы когда-нибудь находили решение для этого? – jqno

ответ

1

Вы можете использовать ThreadLocal, чтобы решить вашу проблему

Вот фрагмент кода для решения.

object IDProvider{ 
     val providerId = new ThreadLocal[String] 
     def getProviderId: String = { 
      providerId.get() 
     } 

     def setProviderId(providerId: String): Unit = { 
      providerId.set(providerId) 
     } 
} 

Для доступа к идентификатору поставщика по различным определениям шага. Вы можете просто позвонить IDProvider.getProviderId

И установить значение providerID, просто вызовите IDProvider.setProviderId (PROVIDER_ID)

Смежные вопросы