我正在使用包中的test_dir()
函数在 R 中运行测试testthat
。在一些测试脚本中,有调用 的函数,readline()
在交互模式下,它会导致测试暂停并等待用户输入。调用的函数readline()
不是我自己的,我对它们没有任何影响。用户输入与这些功能的输出无关。
有没有办法在测试期间避免这些暂停?
想到的方法,但我不知道如何实现它们:
- 在 R 运行时禁用交互模式
- 使用
testthat
包中的另一个以非交互模式运行脚本的函数 - 以某种方式转移
stdin
到终端以外的其他东西(??) - 包装
readline()
在另一个脚本中调用的函数,该脚本在我的测试脚本中以非交互模式调用,并使结果可用
仅使用命令行进行测试Rscript
是一种选择,但我宁愿留在 RStudio 工作流程中。
======
示例代码
with_pause <- function () {
readline()
2
}
without_pause <- function () {
2
}
expect_equal(with_pause(), without_pause())