簡體   English   中英

R test_表示ggplot沒有改變

[英]R test_that a ggplot didn't change

我有一個自定義繪圖功能,我希望確保即使在為繪圖功能添加其他選項后它也會顯示相同的繪圖。

不幸的是, testthat::expect_known_hash -approach失敗了因為ggplots存儲了一些環境的信息,這顯然會在重啟R時發生變化。

在測試函數工廠的輸出時會出現類似的問題,因為閉包也會帶有它們的環境。

有沒有人遇到過這個問題,你是怎么解決的?

compare允許您比較不同的R對象。 該包具有不同的功能來檢測對象之間的差異。

compare(plot(0), plot(0))
TRUE



scatter <- ggplot(data=iris, aes(x = Sepal.Length, y = Sepal.Width)) + geom_point(aes(color=Species, shape=Species))
scatter2 <- ggplot(data=iris, aes(x = Sepal.Length, y = Petal.Width)) + geom_point(aes(color=Species, shape=Species))

compare(scatter, scatter2)

FALSE [TRUE, TRUE, TRUE, FALSE, TRUE, TRUE, TRUE, TRUE, FALSE]
model treated as list
[layers] [1] model treated as character
[scales] model treated as character
[mapping] model treated as list
[mapping] [y] model treated as character
[coordinates] model treated as character
[facet] model treated as character

如果這是測試用例的一部分,您可以使用擴展'testthat'的包'vdiffr'。 它用於測試用例的最新版本'ggplot2',因此您可以在Github中查看示例。 它還在RStudio中安裝一個插件來管理保存的測試用例,並對失敗的測試進行視覺比較。 它工作得很好,我在自己的包中使用它。 它使用簡化的svg設備將參考圖保存到磁盤。

測試用例可能看起來像這樣(其余的都像'testthat'案例):

  vdiffr::expect_doppelganger("test_001",
                              ggplot(data = cars, aes(speed, dist)) +
                                geom_point()
  )

在其他一些情況下,來自包'testthat'的expect_known_output()expect_known_value()可能有所幫助,但我猜不是在所有情況下。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM