2016-11-01 8 views
3

キュウリでは、ステップ定義クラス間で変数を渡す方法を教えてください。 Imは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]を付けます。幸運 – 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) 
     } 
} 

異なるステップ定義間でproviderIDにアクセスする。質問がスカラ座であるとして、あなたは、単に

IDProvider.getProviderIdを呼び出すことができ、providerIDの値を設定するために、単にIDProvider.setProviderId(PROVIDER_ID

関連する問題