Система
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.Положительным моментом является то, что у меня теперь есть целая библиотека тестов, и классные инструменты для тестирования.