Проверка покрытия кода при загрузке файла - PullRequest
0 голосов
/ 07 октября 2019

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

})
...