私は R パッケージに取り組んでおり、C 側のコードで正しい警告がスローされ、R 側でキャッチされるかどうかを確認するための R テスト関数を作成するのに助けが必要です。私が正確に取り組んでいることの背景を説明しましょう。
- 私が書いていることのほとんどは、C 側で行われています。さらに、コーダーが警告を文字列の形式で R に渡すことができるようにする C の if ステートメント タイプのマクロがあります。基本的な前提は、if(statement_true) pass_warning_to_R("渡す警告文字列") です。私がやりたいのは、tryCatch ブロックを使用する R ファイルを作成することによって、これらの警告がスローされると予想される/必要なときにスローされるかどうかをテストすることです。
これまでのところ、私はこれに似たものを書いています:
counter <- 0 tryCatch({ function_im_testing() }, warning = function(war) { # Check if warning is as expected and if so increment counter if(toString(war)=="The warning I'm expecting/testing for"){ print(toString(war)) counter <- counter + 1 } }, error = function(err) { print(toString(err)) }, finally = { print("Leaving tryCatch") }) # Stop if the 3 warnings we expected aren't present stopifnot(counter == 3)
これは私が使用している方法であり、これまでのところ、 toString(war) と「期待/テスト中の警告」を同じにしようとして、ifステートメントを実行することさえできませんでしたもの。これは、この方法がかなりずさんで信頼できないという事実に加えて、より良い方法があると私に信じさせます. それで、これを行うためのより良いアプローチはありますか?