Есть ли способ сделать разработку через тестирование с грамотным программированием?
Я учусь делать свои первые модульные тесты с R, и я пишу свой код в файлах R Markdown, чтобы упростить доставку коротких отчетов об исследованиях. В то же время я хотел бы проверить функции, которые я использую в этих файлах, чтобы убедиться, что результаты нормальны.
Вот проблема: R Markdown файлы предназначены для использования в ткачих HTML, а не в тестовом жгуте RUnit. Если я хочу загрузить функцию в тестовый код, у меня есть несколько вариантов:
- Скопируйте и вставьте фрагмент кода из файла Markdown, который отделяет код в документе Markdown от протестированного кода.
- Поместите мой тестовый код в файл Markdown, что затруднит понимание отчета (возможно, в конце будет допустимо)
- Напишите код, сначала протестируйте его, а затем включите его в качестве библиотеки в код Markdown, который устраняет информативный характер наличия кода в теле отчета.
Есть ли более разумный способ сделать это, чтобы избежать недостатков каждого из этих подходов?
1 ответ
Решение
Вы могли бы сделать что-то вроде этого
## Rmarkdown file with tests
```{r definefxn}
foo <- function(x) x^2
```
Test fxn
```{r testfxn}
library(testthat)
expect_is(foo(8), "numeric")
expect_equal(foo(8), 6)
```
Конечно, при прохождении тестов ничего не печатается, но при неудачных тестах выводятся значимые сообщения о том, что не удалось.