запуск функций JavaScript с использованием execute_script от wallaby не работает - PullRequest
0 голосов
/ 16 мая 2018

Система

OSX v10.13.4 / Elixir v1.6.5 / OTP 19 / Phoenix 1.3.2 / Wallaby 0.19.2 / PhantomJS 2.1

Выпуск

Следующеекод работает в тестировании

execute_script(session, "localStorage.setItem('test', 'foo'); return localStorage.getItem('test');")

Однако, если я вызываю те же самые методы, которые находятся в функции с именем get_test() внутри app.js моего приложения Phoenix

  function get_test() {
    localStorage.setItem('test', 'foo'); 
    return localStorage.getItem('test');
  }

  window.get_test = get_test

И запускаюследующее в моем наборе тестов

execute_script(session, "return get_test();")

Я получаю {:error, :obscured}

Я пробовал с селеном на тот же код, и он работает.Однако, по некоторым причинам, с PhantomJS он, похоже, не находит функции, которые были созданы нами.

Я что-то упустил? Я заметил, что в тестах для execute_script в wallaby нет тестов, которые вызывают специально созданные функции.

https://github.com/keathley/wallaby/blob/master/integration_test/cases/browser/execute_script_test.exs

Аналогичный тест https://github.com/keathley/wallaby/blob/master/integration_test/cases/browser/local_storage_test.exs

, из которого я добавил следующее к local_storage_test, чтобы убедиться, что я не сходил с ума

@function_script """
  function get_tester() {
    localStorage.setItem('tester', 'foo');
    return localStorage.getItem('tester');
  }

  return get_tester();
"""

session
  |> visit("index.html")
  |> execute_script(@function_script, fn(value) -> send self(), {:callback, value} end)

assert_received {:callback, "foo"}

и это прошло.Это явно что-то не так с моим приложением.Или конфиг фантома возможно.

ОБНОВЛЕНИЕ:

Хотя это прямо не упомянуто - я сократил это значение до libsodim , неправильно загружающихся с phantomjs .Вернуться к основам отладки.Ничего плохого в написании JS.Положительным моментом является то, что у меня теперь есть целая библиотека тестов, и классные инструменты для тестирования.

...