Тестовое сохранение ggplots

Я создаю кучу тестов для ggplots. Я включил такие вещи, как проверка меток, если объект вывода - ggplot и т. Д. Но я понятия не имею, как проверить, был ли график сохранен с использованием testthat и ggsave. Ты хоть представляешь, как это можно сделать?


person John    schedule 23.09.2020    source источник
comment
Хороший намек! Недостатком этого решения является то, что я должен указать имя файла. Мои файлы сохраняются на сегодняшний день, поэтому это очень сложно сделать во время тестирования. У вас может быть другая идея, которая не включает имя файла? ;))   -  person John    schedule 23.09.2020
comment
Проверка того, что что-то было сохранено, означает проверку существования определенного файла. Я не понимаю, как можно сэкономить, не используя имя файла. Может быть, проверить количество файлов графики (например, png) в каталоге до и после действия сохранения? Я считаю это неоптимальным.   -  person Roland    schedule 23.09.2020


Ответы (1)


Вот способ тестирования на основе размера файла. Если файл не существует, это NA, а если он существует, он должен быть ›0.

library(testthat)
library(ggplot2)

test_that("plot is saved to file", {
  file <- tempfile(fileext = ".png")
  expect_equal(file.size(file), NA_real_)
  
  plot <- ggplot(mtcars, aes(wt, mpg)) +
    geom_point()
  
  ggsave(file, plot, "png")
  
  expect_true(file.size(file) > 0)
  
  unlink(file)
})

person teunbrand    schedule 23.09.2020