首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我们可以使用testthat和and来检查闪亮的应用程序吗?

我们可以使用testthat和and来检查闪亮的应用程序吗?
EN

Stack Overflow用户
提问于 2020-02-11 16:27:10
回答 1查看 83关注 0票数 0

有没有办法检查下面的应用程序。这是一个显示所选行的示例应用程序。但一般来说,有没有办法实现这一点。例如,下面的代码就很完美。假设我可能会有一些错误,我需要一次全部签入。我们能做到吗?我还粘贴了错误代码

对,是这样

代码语言:javascript
复制
library(shiny)
library(DT)

ui <- basicPage(
  mainPanel(DT::dataTableOutput('mytable')),
  textOutput("selected")
)

server <- function(input, output,session) {

  mydata <- reactive({mtcars})

  output$mytable = DT::renderDataTable(    
    datatable(mydata())
  ) 

  selectedRow <- eventReactive(input$mytable_rows_selected,{
    row.names(mtcars)[c(input$mytable_rows_selected)]
  })

  output$selected <- renderText({ 
    selectedRow()
  })
}
runApp(list(ui = ui, server = server))

错误/错误代码

代码语言:javascript
复制
library(shiny)
library(DT)

ui <- basicPage(
  mainPanel(DT::dataTableOutput('mytable')),
  textOutput("selected")
)

server <- function(input, output,session) {

  mydata <- reactive({mtcars})

  output$mytable = DT::renderDataTable(    
    datatable(mydata())
  ) 

  selectedRow <- eventReactive(input$mytable_rows_selected,{
    row.names(mtcars)[c(input$[mytable_rows_selected])]
  })

  output$selected <- renderText({ 
    selectedRow
  })
}
runApp(list(ui = ui, server = server))
EN

回答 1

Stack Overflow用户

发布于 2020-02-11 17:08:22

我使用shinytest包来测试我闪亮的应用程序。shinytest使用phantomJS来操作应用程序(例如,模拟按钮按下等)

testthat/test-shinyapp.R中的条目类似于:

代码语言:javascript
复制
test_that("Shiny template works", {
  app <- shinytest::ShinyDriver$new("Path_To_ShinyApp/"))

  # plot changes
  # first click makes plot
  testthat::expect_false(length(grepl("^(data:image/png;base64)",
                                      app$getAllValues()$output$plot1$src)) > 0)
  app$setInputs(apply = "click")
  testthat::expect_true(length(grepl("^(data:image/png;base64)",
                                      app$getAllValues()$output$plot1$src)) > 0)
  testthat::expect_true(grepl("^(data:image/png;base64)",
                              app$getAllValues()$output$plot1$src))

  # are subsequent changes applied?
  testthat::expect_identical(app$getAllValues()$input$xVar, "mpg")
  testthat::expect_true(
    grepl("      mpg             cyl", app$getAllValues()$output$summary1))
  app$setInputs(xVar = "drat")
  app$setInputs(apply = "click")
  testthat::expect_true(
    grepl("      drat            cyl", app$getAllValues()$output$summary1))

  # # test for reactive
  # shinytest::expectUpdate(app, xVar = "wt", output = "plot1" )
  # shinytest::expectUpdate(app, yVar = "drat", output = "plot1" )
  # shinytest::expectUpdate(app, xVar = "cyl", output = "summary1" )
  # shinytest::expectUpdate(app, yVar = "mpg", output = "summary1" )

  # cleanup
  app$stop()
  unlink(paste0(ws2us(testDir),"_ShinyApp"), recursive = TRUE)
})
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60164625

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档