2016-09-28 6 views
0

私は(彼らは一番下にある例えばfixture1など、今のところ、いくつかの依存関係を無視して)次の関数を使用して、私のテストを定義したいと思います:Scalaで関数の引数を連鎖させるには?

multiTest("my test name", fixture1) { case (x: Double, y: Int, z: String) => 
    // test body 
} 

multiTestのように私のベースのカスタムFunSpecLikeサブクラスで定義されています

def multiTest(testName: String, fixture: FixtureTable)(fun: => Unit)(implicit pos: source.Position): Unit = { 
    val heading = fixture.heading 
    fixture.values.foreach { tuple => 
     it(autoGenerateDesc(heading, tuple)) { 
      fun tuple // <<<<<< how can I pass the tuple to the definition above? 
     } 
    } 
} 

どのようにタプルを関数にプッシュできますか?

欠けている部分の一部が

は以下のとおりです。

case class FixtureTable(heading: Map[String, String], values: Seq[Any]) 
// tableFor generates the permutations of all paramater values 
val fixture1 : FixtureTable = tableFor(
    ("x", List(1e-1, 1e-2)), 
    ("y", List(1, 2, 3)), 
    ("z", List("a", "b"))) 
+0

これはあなたの質問に答えますか? http://stackoverflow.com/questions/1987820/how-to-apply-a-function-to-a-tuple –

+0

どのように答えが得られますか。 –

答えて

1

そのまま、することはできません。 multitest

case class FixtureTable[A](heading: Map[String, String], values: Seq[A]) 
def multiTest[A](testName: String, fixture: FixtureTable[A])(fun: A => Unit)(implicit pos: source.Position): Unit = { 
    val heading = fixture.heading 
    fixture.values.foreach { tuple => 
     it(autoGenerateDesc(heading, tuple)) { 
      fun(tuple) 
     } 
    } 
} 

またはより良い

def multiTest(testName: String, fixture: FixtureTable)(fun: Any => Unit)(implicit pos: source.Position): Unit = { 
    val heading = fixture.heading 
    fixture.values.foreach { tuple => 
     it(autoGenerateDesc(heading, tuple)) { 
      fun(tuple) 
     } 
    } 
} 

に変更しますが、この場合のために tableFor関数を記述するのは難しいだろう。

+0

優秀、ありがとう! –

関連する問題