testServer {shiny} | R Documentation |
Reactive testing for Shiny server functions and modules
Description
A way to test the reactive interactions in Shiny applications. Reactive interactions are defined in the server function of applications and in modules.
Usage
testServer(app = NULL, expr, args = list(), session = MockShinySession$new())
Arguments
app |
A server function (i.e. a function with You can also provide an app, a path an app, or anything that
|
expr |
Test code containing expectations. The objects from inside the
server function environment will be made available in the environment of
the test expression (this is done using a data mask with
|
args |
Additional arguments to pass to the module function. If |
session |
The |
Examples
# Testing a server function ----------------------------------------------
server <- function(input, output, session) {
x <- reactive(input$a * input$b)
}
testServer(server, {
session$setInputs(a = 2, b = 3)
stopifnot(x() == 6)
})
# Testing a module --------------------------------------------------------
myModuleServer <- function(id, multiplier = 2, prefix = "I am ") {
moduleServer(id, function(input, output, session) {
myreactive <- reactive({
input$x * multiplier
})
output$txt <- renderText({
paste0(prefix, myreactive())
})
})
}
testServer(myModuleServer, args = list(multiplier = 2), {
session$setInputs(x = 1)
# You're also free to use third-party
# testing packages like testthat:
# expect_equal(myreactive(), 2)
stopifnot(myreactive() == 2)
stopifnot(output$txt == "I am 2")
session$setInputs(x = 2)
stopifnot(myreactive() == 4)
stopifnot(output$txt == "I am 4")
# Any additional arguments, below, are passed along to the module.
})