Mam wiele funkcji generujących wykresy, zazwyczaj z ggplot2. Właśnie teraz generuję wykres i testuję podstawowe dane. Ale chciałbym się dowiedzieć, czy istnieje rozsądny sposób przetestowania, czy fabuła zawiera warstwy/opcje, których się spodziewam, lub czy elementy graficzne pasują do oczekiwań.Jak napisać test dla wykresu ggplot?
Na przykład:
library(ggplot2)
library(scales) # for percent()
library(testthat)
df <- data.frame(
Response = LETTERS[1:5],
Proportion = c(0.1,0.2,0.1,0.2,0.4)
)
#' @export plot_fun
plot_fun <- function(df) {
p1 <- ggplot(df, aes(Response, Proportion)) +
geom_bar(stat='identity') +
scale_y_continuous(labels = percent)
return(p1)
}
test_that("Plot returns ggplot object",{
p <- plot_fun(df)
expect_is(p,"ggplot")
})
test_that("Plot uses correct data", {
p <- plot_fun(df)
expect_that(df, equals(p$data))
})
To gdzie utknąłem
test_that("Plot layers match expectations",{
p <- plot_fun(df)
expect_that(...,...)
})
test_that("Scale is labelled percent",{
p <- plot_fun(df)
expect_that(...,...)
})
Być może istnieje bardziej bezpośrednie podejście?
ggplot2 [repo] (https://github.com/hadley/ggplot2/blob/master/tests/test-all.R) nie ma testów, więc może to nie jest realizowany? Byłby miłym dodatkiem. – jeremycg
Jestem świadomy, stąd pytanie - i przychodzące nagrody. –
[This] (https://github.com/wch/ggplot2/wiki) może być przydatny, chociaż nie jestem pewien, jak wiele rozwoju zestaw testów wizualnych uzyskał od czasu jego wdrożenia. – joran