testthat
パッケージのtest_dir()
関数を使用してRでテストを実行しています。テストスクリプトの中には、readline()
を呼び出す関数があります。対話モードでは、テストを一時停止してユーザーの入力を待っています。 readline()
を呼び出す関数は私のものではなく、私はそれらに影響を与えません。ユーザー入力は、これらの関数の出力には関係ありません。テスト中にreadline()による一時停止を避ける
テスト中にこれらの一時停止を回避する方法はありますか?心に来るが、私はそれらを実装する方法を知っているではないでしょう
アプローチ:
- 無効対話モードRは
- が非でスクリプトを実行します
testthat
パッケージから別の関数を使用して実行している間対話モード - は何とか、端末以外の何かに
stdin
をそらす(??)私のTESから非対話モードで呼び出された別のスクリプトでreadline()
を呼び出す - ラップ機能結果を利用可能にする
Rscript
を使用してコマンドラインからのみテストすることはオプションですが、私はRStudioワークフローに留まりたいと思います。
======
サンプルコード
with_pause <- function() {
readline()
2
}
without_pause <- function() {
2
}
expect_equal(with_pause(), without_pause())
私は今、コマンドラインからテストに固執します。あまりにも面倒ではありませんが、ワークフローの点でまだ解決策ではありません。 – Niels