Покрытие тестового кода при загрузке файла

Я использую 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) )

})

0 ответов

Другие вопросы по тегам