基本的な質問は、標準入力を特定の文字列に設定する必要があります。現在、私はこれでそれをしようとしています:それは、私はJavaでそれを行うだろうかと似ていますのでstdinを文字列に上書きする方法
import java.nio.charset.StandardCharsets
import java.io.ByteArrayInputStream
// Let's say we are inside a method now
val str = "textinputgoeshere"
System.setIn(new ByteArrayInputStream(str.getBytes(StandardCharsets.UTF_8)))
、しかしstr.getBytesは、私がチェックしたときにメモリアドレスに設定されている中で、システムとしてのScalaで異なる動作をするようですprintlnとそれ....
私はScalaのAPIを見てきました:http://www.scala-lang.org/api/current/scala/Console $の.html#SETIN(中:java.io.InputStreamを):ユニット と私は
def withIn[T](in: InputStream)(thunk: ⇒ T): T
を見つけましたしかし、これはコードの特定の塊のための入力ストリームを設定するようだ、私はしたいこれは私のJUnitテストのSetupメソッドの機能です。
Scalaは副作用が嫌いですが、これはむしろ残酷なものです。テストしているメソッドに入力ストリームを渡すこともできますか? – Reactormonk
重複のように見えます:http://stackoverflow.com/questions/40344117/create-user-prompt-and-simulate-interaction/40350178 – tkachuko