기본 질문. 표준 입력을 특정 문자열로 설정하려고합니다. 현재 내가이 함께 노력하고 있습니다 :stdin을 String으로 대체하는 방법
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 내가 검사 할 때 메모리 주소로 설정됩니다의 시스템으로 스칼라에서 다르게 작동하는 것 같다 에 println와 그것을 ....
내가 스칼라 API 검토 한 : http://www.scala-lang.org/api/current/scala/Console $ .html 중에서 # 안에서 설정했는지 (에 : java.io.InputStream를) 단위 내가
def withIn[T](in: InputStream)(thunk: ⇒ T): T
을 발견했습니다 그러나 이것은 특정 코드 덩어리에 대해서만 입력 스트림을 설정하는 것처럼 보입니다. 이것은 내 JUnit 테스트에서 Setup 메서드의 기능입니다.
스칼라는 약간의 부작용을 싫어합니다.이 스칼라는 다소 잔인합니다. 테스트중인 메서드로 입력 스트림을 전달할 수도 있습니까? – Reactormonk
중복 된 것으로 보입니다 : http://stackoverflow.com/questions/40344117/create-user-prompt-and-simulate-interaction/40350178 – tkachuko