2017-11-16 18 views
1

RマークダウンPDFレポートにエラーメッセージを含めたいと思います。これがうまく機能:testthatからのエラーメッセージをRマークダウン文書に含めます

--- 
output: pdf_document 
--- 

This will be knitted and show the error message in the pdf. 
```{r, error = TRUE} 
stopifnot(2 == 3) 
``` 

をしかし、私はtestthatから来ているエラーと同じアプローチをしようとした場合、私の文書はもうニットはありません。

--- 
output: pdf_document 
--- 

This will not knit 
```{r, error = TRUE} 
library(testthat) 
expect_equal(2, 3) 
``` 

なぜですか?そして、私はtestthatexpect_something機能からのエラーメッセージをテストにラップすることなく含めることができますか?

Hadley Wickhamは、expect_something -functionsから直接来た彼の本のRパッケージに多くのエラーメッセージを含んでいるので、これが可能でなければならないと思います。

これは、関連するが、Include errors in R markdown package vignetteHow to skip error checking at Rmarkdown compiling?

+1

テストはknitrではサポートされていません。 https://github.com/yihui/knitr/issues/1413 –

答えて

1

に答えていない私は、行動の理由を理解していない(良い質問!)が、これはこの問題を回避することができている:

--- 
output: pdf_document 
--- 

This will knit 
```{r, error = TRUE} 
library(testthat) 
# expect_equal(2, 3) 
# skip_if_not(2, 3) 
assertthat::assert_that(2 == 3) 
``` 
+0

ご回答ありがとうございます。残念ながら、これは 'testthat'パッケージからのより有益なエラーメッセージを含めるので、実際には役に立ちません。 'expect_equal(2,3)'と 'skip_if_not(2、3)'は同じエラーメッセージを投げないことに注意してください。 – symbolrush

+0

おそらく 'assertthat'は良いですか? [ここ](https://stackoverflow.com/q/8343509/5784831)から。編集を参照してください... – Christoph

1

作成テスト:

```{r, error = TRUE} 
library(testthat) 
test_that("Test A", { 
    expect_equal(2, 3) 
}) 
``` 
+0

あなたの答えをありがとう。これは回避策かもしれません。しかし、 'expect_something'関数からのエラーを直接インクルードすることができます。私の質問の編集を参照してください。 – symbolrush

+0

私が見る限り、すべてのエラーメッセージはテストに含まれる比較から来ています。比較だけのチャンクがある場合、彼は 'eval = F'(https://github.com/hadley/r-pkgs/blob/master/tests.rmd)を設定しています –

+0

それは本当です。しかし、彼は最近それを変更しました。 https://github.com/hadley/r-pkgs/commit/649b73691b469dae68db63b9cd77e18e527dd808これには問題があり、 'expect_something'関数からのエラーメッセージは現時点では不可能かもしれません。 – symbolrush

関連する問題