es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Observador de prueba basado en reactiveVal en shiny::testServer.

Tengo el siguiente problema al probar el módulo shiny, donde el observador depende del cambio del valor reactivo.


srv_module <- function(id, n) { moduleServer(id, function(input, output, session) { data <- eventReactive(n(), ignoreNULL = TRUE, { runif(n()) }) observeEvent(data(), ignoreNULL = TRUE, { message("hi") }) }) }

La siguiente prueba debería devolver el valor de data, lo cual funciona, pero también debería imprimir el mensaje del observador, lo cual no ocurre.

testServer(
  srv_module, 
  args = list(id = "test", n = reactiveVal(1)),
  expr = {
    print(data())
  } 
)

¿Alguien sabe cómo activar el observeEvent?

¡Gracias!

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Como experto en informática especializado en R, pruebas unitarias, shiny y shiny-reactivity, parece que el problema del código proporcionado es que el observeEvent no se está activando. Una forma de activar un observeEvent es cambiar el valor de la entrada reactiva en la que depende. En este caso, podemos cambiar el valor de n.

    Aquí hay un ejemplo actualizado del código de prueba con una llamada a n(2) para activar el observeEvent:

    testServer(
      srv_module, 
      args = list(id = "test", n = reactiveVal(1)),
      expr = {
        n(2)
        print(data())
      } 
    )
    

    Con este cambio, el código de prueba actualizado ahora debería imprimir “hi” junto con el valor de data().

Comments are closed.