Как я могу ввести консоль модульного тестирования в scala?

Как я могу ввести консоль модульного тестирования в scala с помощью scalaTest. Тестируемый код:

object ConsoleAction {
  def readInput(in: InputStream): List[String] = {
    val bs = new BufferedSource(in)(Codec.default)
    val l = bs.getLines()
    l.takeWhile(_!="").toList
  }

  def main(args: Array[String]) {
    val l = ConsoleAction.readInput(System.in)
    println("--> "+l)
  }
}

Я хотел бы протестировать метод readInput. Однострочный ввод можно протестировать следующим образом:

"Result list" should "has 1 element" in {
  val input = "Hello\\n"
  val is = new ByteArrayInputStream(input.getBytes(StandardCharsets.UTF_8))
  assert(ConsoleAction.readInput(is).size===1)
}

... но как сделать многострочный ввод?

input line 1
input line 2

спасибо


person gopek    schedule 04.08.2014    source источник
comment
Хм... в чем проблема с несколькими строками в переменной input? например val input = "foo\nbar\n"   -  person om-nom-nom    schedule 04.08.2014


Ответы (1)


Ваша проблема заключается в том, как вы избегаете новой строки. Вы делаете «\\n», а не «\n». Этот тест должен пройти.

"Result list" should "has 2 elements" in {
  val input = "Hello\nWorld\n"
  val is = new ByteArrayInputStream(input.getBytes(StandardCharsets.UTF_8))
  assert(ConsoleAction.readInput(is).size===2)
}
person Larsenal    schedule 04.08.2014