簡體   English   中英

測試帶有 Unit 返回類型的 scala 函數

[英]test a scala function with Unit return type

是否可以使用 Scala 測試來測試單元返回類型函數? 如果是,請給我答案,我需要我的代碼覆蓋率更高。

返回 Unit 的函數可能有副作用,因此您需要測試副作用。

以下測試斷言Hello , World正在控制台上打印。


type ConsoleErrors  = List[String]
type ConsoleOutputs = List[String]
test("should print hello world to console") {

  def toString(arr: Array[Byte]): List[String] = new String(arr).split("\n").toList.filter(!_.isEmpty)

  def captureConsole[T](f: => T): (T, ConsoleOutputs, ConsoleErrors) = {
    val outCapture = new ByteArrayOutputStream
    val errCapture = new ByteArrayOutputStream
    try {
      val t                   = Console.withOut(outCapture)(Console.withErr(errCapture)(f))
      val out: ConsoleOutputs = toString(outCapture.toByteArray)
      val errs: ConsoleErrors = toString(errCapture.toByteArray)
      (t, out, errs)
    }
    finally {
      outCapture.reset()
      errCapture.reset()
    }
  }

  val (_, out, errs) = captureConsole {
    println("Hello")
    println("World")
  }

  out shouldBe List("Hello", "World")
  errs shouldBe List.empty
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM