Как мне войти в систему или отследить, используя блестящий? - PullRequest
0 голосов
/ 20 октября 2018

Я бы хотел видеть, что происходит внутри reactive({...}) частей в моем коде.Я подумал, что использование Блестящие могут быть способом выполнения частей моего приложения, которые используют 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

Как добавить вывод трассировки в тестовый прогон?

Ответы [ 3 ]

0 голосов
/ 03 ноября 2018

Я не думаю, что сейчас есть действительно удобный способ увидеть выходные данные приложения в самых ярких, но есть такой метод для объектов ShinyDriver:

app$getDebugLog() запрашивает один или несколько отладочных сообщенийlogs: 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)
0 голосов
/ 09 апреля 2019

глянцевый интегрируется с концепцией блестящего экспорта значений во время тестирования, поэтому вы можете использовать функцию 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())

Это позволит зафиксировать реактивное значение в снимке под ключом exports в файле json, так что вы можете использовать его в своих сравнениях тестов (а также просматривать данные, если вы'like').

Последнее замечание: эти значения экспорта запускаются только в том случае, когда приложение находится в тестовом режиме, например, isTRUE(getOption("shiny.testmode")).

Я написал сообщение в блоге о том, как я используюэто для проверки DataTables в блестящем, вы можете прочитать это здесь: https://nadirsidi.github.io/Shinytest/.

0 голосов
/ 02 ноября 2018

Вы можете выделить функции print (), cat (), warning () внутри своей реактивной функции, чтобы проверить значение o класса вашего объекта в приглашении R.Это работает для меня, используя только Shinny в RStudio без блестящего.Кроме того, как вы сказали, что предыдущие опции не работают, вы можете поместить функцию write.myformat(), чтобы написать объект любого типа и проверить его внешне.

...