Слишком большой уровень случайного стека (SystemStackError)

В последнее время я сталкивался с каким-то странным гремлином в моем коде. Случайно он выдаст ошибку "слишком большой уровень стека (SystemStackError)" для фрагмента кода, который работал ранее, иногда за несколько минут до этого. Я прочитал подобные темы здесь, на уровне стека, но не могу найти мою проблему. Где-то происходит рекурсия, но она не выглядит последовательной.

Две наиболее распространенные точки ошибки:

stack level too deep (SystemStackError)
      ./features/step_definitions/login.rb:40:in `/^I enter username "([^"]*)"$/'
      features/01_login.feature:30:in `When I enter username "John"'



stack level too deep (SystemStackError)
      ./features/step_definitions/login.rb:23:in `/^I press select env$/'
      features/01_login.feature:26:in `Then I press select env'

При запуске моего теста первая ошибка будет отображаться с именем пользователя, за несколько секунд до успешного завершения этого теста. Повторный запуск моего теста после сброса вызовет вторую ошибку, которая является еще более странной, поскольку тест должен запускаться ЧЕРЕЗ эту точку, чтобы даже получить имя пользователя, которое мы достигли в первом запуске. Этот порядок не соответствует. Иногда он просто выдает ошибку по той или иной части, что затрудняет поиск.

Код для двух рассматриваемых ошибок.

When (/^I enter username "([^"]*)"$/) do | username |
        enter_text "UITextFieldLabel text:'Username'", "John"
    end

Then (/^I press select env$/) do
        touch "label text:'Select Env'"
    end

1 ответ

Решение

Есть хороший шанс, что все, что вам нужно, это подождать, прежде чем пытаться использовать элементы в каждом конкретном случае. Я сталкивался с похожими проблемами, когда сталкивался с некоторыми method_missings и застревал в цикле, когда пытался взаимодействовать с элементами, которые еще не были или не были готовы взаимодействовать.

В calabash есть много методов ожидания, но в этом случае вы, вероятно, захотите wait_for_element_exists

http://calabashapi.xamarin.com/ios/Calabash/Cucumber/WaitHelpers.html

Другие вопросы по тегам