Покрытие тестового кода при загрузке файла
Я использую testthat
а также covr
чтобы проверить тестовое покрытие моего пакета. Некоторые функции в этом пакете включают загрузку файла перед выполнением нескольких операций. Я включил сценарий, тестирующий различные части функции, но я не нашел способа протестировать часть, в которой функция загружает файл, поэтому функция никогда не получает 100% покрытия.
library(readr)
library(httr)
library(testthat)
library(covr)
file_coverage(source_files="R/download_fun.R",
test_files="tests/testthat/test-download_fun.R")
> Coverage: 71.43%
> R/download_fun.R: 71.43%
Есть простой способ проверить это? Ниже я привел воспроизводимый пример.
Моя функция
#' test function
#'
#' Testintg function
#'
#' @export
#'
download_fun <- function(x) {
# Get data
tempf <- file.path(tempdir(), "41ME.rds")
# check if data has already been downloaded
if (file.exists(tempf)) {
temp_sf <- readr::read_rds(tempf)
} else {
# download data
httr::GET(url="http://www.ipea.gov.br/geobr/data/meso_regiao/2014/41ME.rds", httr::write_disk(tempf, overwrite = T))
temp_sf <- readr::read_rds(tempf)
}
t <- min(temp_sf$code_meso) + x
return(t)
}
Мой тест
context("Download")
test_that("download_fun", {
expect_that( download_fun(0), equals(4101) )
})