我在 R 包中编写了一个简单的测试来检查绘图的类别。它看起来像这样:
test_that("test works", {
base_r_plot <- recordPlot(plot(1))
expect_equal(class(base_r_plot), "recordedplot")
})
如果我尝试通过
devtools::test()
运行它,我会得到:
Error in `recordPlot(plot(1))`: no current device to record from
这是为什么?我该如何补救?
在交互式会话中,图形设备往往“自行”打开。然而,运行测试显然与设备不同,例如
pdf()
需要手动打开。将其设置为 pdf(NULL)
还可以防止编写多余的 Rplots.pdf
。
test_that("test works", {
pdf(NULL) # prevent writing Rplots.pdf
base_r_plot <- recordPlot(plot(1))
dev.off()
expect_equal(class(base_r_plot), "recordedplot")
})