我最近在我的代码中遇到了一个奇怪的小鬼。它会随机地在一段代码上转储一个“堆栈级别太深(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