我希望能够看到代码中的reactive({...})部件内部发生了什么。我认为使用shinytest可以执行使用Shiny Modules并了解callModule的部分应用程序。
我尝试在我的代码中记录/跟踪/打印以下内容。
print("hello1")
message("hello2")
cat(file=stderr(), "hello3")
logging::loginfo("hello4")runtest.R
library(shinytest)
testApp("/home/eddy/rwork/filters", "mytest")
viewTestDiff("/home/eddy/rwork/filters", interactive = FALSE)产出:
Rscript runtest.R
Running mytest.R
==== Comparing mytest... No changes.
==== mytest ====
No differences between expected and current results如何在测试运行中添加一些跟踪输出?
发布于 2018-11-03 19:59:13
我认为现在还没有一种非常方便的方法来查看应用程序的输出,但是在ShinyDriver对象上有这样的方法:
app$getDebugLog()查询一个或多个调试日志:shiny_console、browser或shinytest。 https://rstudio.github.io/shinytest/reference/ShinyDriver.html
您可以将此与shiny_console选项一起用于在单个测试中打印应用程序输出,如:
# mytest.R
app <- ShinyDriver$new()
...
log <- app$getDebugLog("shiny_console")
print(log)发布于 2019-04-09 16:33:41
shinytest在测试过程中集成了闪亮的导出值概念,因此您可以使用函数shiny::exportTestValues()创建带有要导出的值(包括反应性)的命名表达式。
例如,如果在应用程序代码中使用了某种类型的输入绑定的反应性data.frame,scaledData,则可以执行以下操作:
scaledData <- reactive({
dummyData[, "y"] <- dummyData[, "y"] * input$scale
return(dummyData)
})
# The scaledData will be captured as a json object in the shinytest output
exportTestValues(scaledData = scaledData())这将捕获json文件中exports键下快照中的反应性值,因此您可以在测试比较中使用这个值(如果愿意,还可以查看数据)。
最后一个注意事项是,这些导出值只有在应用程序处于测试模式(例如isTRUE(getOption("shiny.testmode")) )时才能运行。
我写了一篇博文,讲述了我是如何用这个工具来测试DataTables的,你可以在这里读到:https://nadirsidi.github.io/Shinytest/。
发布于 2018-11-02 17:53:47
您可以在您的反应性函数中分配print()、cat()、警告(),以在R提示符内检查对象的值o类。这适用于我只在RStudio中使用Shinny,而不使用shinytest。另外,正如您所说的,它不能使用前面的选项,您可以放置一个write.myformat()函数来编写任何类型的对象并在外部检查它。
https://stackoverflow.com/questions/52900477
复制相似问题