what tutorial rails docs ruby-on-rails rspec capybara integration-testing poltergeist

ruby on rails - tutorial - ¿Cómo devolver un valor cuando se utiliza execute_script en capybara?



rails 5 rspec (1)

El controlador Poltergeist está diseñado para devolver nil para execute_script :

def execute_script(script) browser.execute(script) nil end

Poltergeist solo devolverá un valor si usas el evaluate_script :

def evaluate_script(script) browser.evaluate(script) end

Capybara tiene métodos correspondientes para cada uno, es decir, Session#execute_script y Session#evaluate_script Session#execute_script . Tu código debería funcionar si cambias a usar eval_script (y como lo señala @AndreyBotalov, también debes eliminar la return ):

puts page.evaluate_script("somefunction();").to_i.inspect

Tengo una línea realmente simple en una prueba que llama a ejecutar un script como este:

puts page.execute_script("return somefunction();").to_i.inspect

Y en javascript tengo una función como esta:

function somefunction(){ console.log("test"); return 999; }

La ''prueba'' del registro de la consola se está desconectando, por lo que se está ejecutando ...

Al observar los registros al ejecutar la prueba, execute_script devuelve 0 no 999, por lo que en rspec no puedo obtener el valor de retorno de la función, ¿cómo hago que page.execute_script devuelva ese valor de esa función?