Skip to contents

Enable `update` functions in the Shiny or Shiny extension package to be mocked in tests.

Usage

use_shiny_testers(..., .package = "shiny", .env = rlang::caller_env())

with_shiny_testers(code, ..., .package = "shiny")

Arguments

...

Arguments passed to create_test_update_fns

.package

Character string of the package that the update functions exist in. Default is `"shiny"`

.env

Environment that defines effect scope. For expert use only.

code

Code to execute with specified bindings.

Value

Implicit return of the updated functions in the supplied package within the specified environment.

Examples

library(shiny)
library(testthat)

example_server_fn <- function(input, output, session) {
  observeEvent(input$trigger, {
      updateTextInput(
      inputId = "result",
      label = "New Label",
      value = NULL,
      placeholder = "New placeholder"
    )
  })
}

test_that("Check that text input gets updated", {
  use_shiny_testers()

  shiny::testServer(
    app = example_server_fn,
    expr = {
      session$setInputs(result = "Example text")
      session$setInputs(trigger = 1L)

      expect_identical(input$result, "Example text")
      expect_identical(input$result.label, "New Label")
      expect_identical(input$result.placeholder, "New placeholder")
    }
  )
})
#> Test passed 🥇