Тестирование редактируемого DT с использованием Shinytest - PullRequest
1 голос
/ 25 сентября 2019

Я пытаюсь создать модульные тесты для блестящего приложения, над которым я работаю, но не могу понять, как вводить значения для редактируемой таблицы DT.

Пример приложения:

library(shiny)
library(DT)

ui <- fluidPage(
  DTOutput("table"), 
  textOutput("mean")
)

server <- function(input, output) {
  tableUpdate <- reactiveVal(0)

  table <- data.frame(A = 1:5, B = 6:10, C = 11:15)

  output$table <- renderDT({table},
    options = list(paging = FALSE, dom = 't'),
    selection = 'none',
    server = FALSE,
    editable = list(target = 'row')
  )

  observeEvent(input$table_cell_edit, {
    table <<- editData(table, input$table_cell_edit)
    tableUpdate(tableUpdate() + 1)
  })

  output$mean <- renderText({
    tableUpdate()
    paste(mean(table$A), mean(table$B), mean(table$C))
  })
}

shinyApp(ui, server)

Пример теста:

library(shinytest)

app <- ShinyDriver$new(".")
app$setInputs(table_cell_clicked = list(row = 2, col = 2, value = 7), allowInputNoBinding_ = TRUE)
app$setInputs(table_cell_edit = data.frame(row = 2, col = 0:3, value = "1"), 
              allowInputNoBinding_ = TRUE, priority_ = "event", wait_ = FALSE, values_ = FALSE)
app$takeScreenshot()
app$stop()
rm(app)

Я сохранил это в основном так, как получилось, когда записывал тест, но я исправил значения setInputs для table_cell_edit и table_cell_clicked (которые вышли каквекторы).

Это дает ошибку: Error in sd_getAllValues(self, private, input, output, export) : Unable to fetch all values from server. Is target app running with options(shiny.testmode=TRUE?)

Работа в тестовом режиме не решает проблему.

...