【发布时间】:2016-11-07 19:03:20
【问题描述】:
基本问题,我想将标准输入设置为特定字符串。目前我正在尝试这个:
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)))
因为这与我在 Java 中的操作方式相似,但是 str.getBytes 在 Scala 中的工作方式似乎有所不同,因为当我使用 println...检查 System in 时,它被设置为内存地址......
我查看了 Scala API:http://www.scala-lang.org/api/current/scala/Console$.html#setIn(in:java.io.InputStream):Unit 我找到了
def withIn[T](in: InputStream)(thunk: ⇒ T): T
但这似乎只为特定代码块设置输入流,我希望这是我的 JUnit 测试中 Setup 方法中的一个功能。
【问题讨论】:
-
Scala 有点不喜欢副作用,而这个是相当残酷的——你能不能把输入流也传入你正在测试的方法中?