随机堆栈级别太深(SystemStackError)

时间:2015-06-11 16:02:41

标签: ios cucumber calabash stack-level

我最近在代码中遇到了一种奇怪的问题。随机地它将在一段代码中转储“堆栈级太深(SystemStackError)”错误,这段代码之前有时甚至是之前的工作。我已经阅读了SO中涉及堆栈级别的类似线程,但似乎无法找到我的问题。在某处发生了一次递归,但它似乎并不一致。

两个最常见的错误点:

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 个答案:

答案 0 :(得分:0)

在尝试使用每种情况下的元素之前,您很有可能只需要等待。我遇到了类似的问题,当我试图与尚未准备好与之交互的元素进行交互时,我遇到了一些method_missings并陷入了循环中。

calabash中有很多等待方法,但在这种情况下你可能需要wait_for_element_exists

http://calabashapi.xamarin.com/ios/Calabash/Cucumber/WaitHelpers.html#wait_for_element_exists-instance_method