我想为我的主函数编写一个单元测试,其中有一个readLine()
循环。如何模拟scala readLine
我已经尝试了以下是基于java的。我认为readLine()
可能需要System.in
作为inputStream
。但它不起作用。在等待输入的readLine()
上阻止ScalaTest。
"readLine" should "work" in {
val in = new ByteArrayInputStream("abc".getBytes)
System.setIn(in)
readLine() === "tester"
}
任何想法?谢谢。
我不清楚你的问题到底如何。你在寻找更好的阅读方式吗? io.Source.fromInputStream(...)。getLines可以从输入流中读取,并且非常容易使用或传递不同的流。 –
什么是'readLine' - 是scala.Console或scala.io.StdIn中的弃用方法?或者这是你自己制作的功能?如果是这样,你可以发布源? – childofsoong
@soong,@ rock-fall对不清楚的问题抱歉。我想要做的是集成测试并模拟用户输入以验证我的应用的行为是否正确。由于有一些调用像'console.readLine()'等,我想嘲笑它们,例如在'Inputbuffer'中预先输入一些字符串作为用户输入。然后,readLine()只读取来自'InputBuffer'的输入。 –