2016-10-06 22 views
2

PROJECT_ENV環境変数に基づいて異なる文字列を返すためのgetメソッドを使ってConfigオブジェクトを作成しました。 PROJECT_ENV=testの場合、Config.get("somePath")は/ path.csvを返します。それ以外の場合は、s3a://some_bucket/a_file.csvを返します。ルビー/ RSpecのでScala/SBTテストスイート実行時の環境変数の設定

object Config { 

    def test(): Map[String,String] = { 
    Map(
     "somePath" -> "some/path.csv" 
    ) 
    } 

    def default(): Map[String,String] = { 
    Map(
     "somePath" -> "s3a://some_bucket/a_file.csv" 
    ) 
    } 

    def get(key: String, env: Option[String] = sys.env.get("PROJECT_ENV")): String = { 
    val lookupMap = if (env == Some("test")) { 
     List(default(), test()).flatten.toMap 
    } else { 
     default() 
    } 
    lookupMap(key) 
    } 

} 

、私はENV['PROJECT_ENV'] = 'test'spec_helper.rbファイルで環境変数を設定します。

spec_helper.rbファイルのスカラー量はどれくらいですか? Scalaで環境変数を設定するにはどうすればよいですか? This answerで十分ではありません。

$ PROJECT_ENV=test sbt testを実行すると、私のテストスイートは正常に動作しますが、$ sbt testを実行するだけです。

+0

なぜsbt内に環境変数を設定したいのですか?アプリケーション間で使用しますか? –

答えて

1

この質問は、Set default env variable for test configuration in sbtと重複しているようです。

あそこ受け入れ答えは私のためによく働い:

fork in Test := true 
envVars in Test := Map("PROJECT_ENV" -> "test") 

キーがそうでなければ起動SBTが使用されます劇中と同じENVをフォークが含まれていることを確認することです。

関連する問題