最近、コードで奇妙なグレムリンに遭遇しています。ランダムに、「スタック レベルが深すぎます (SystemStackError)」エラーが、以前、場合によっては少し前に機能していたコードにダンプされます。SO でスタック レベルを含む同様のスレッドを読みましたが、問題が見つからないようです。どこかで再帰が発生していますが、一貫していないようです。
最も一般的な 2 つのエラー ポイント:
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'
私のテストを実行すると、最初のエラーがユーザー名とともにポップアップし、このテストが正常に完了するまでに少し時間がかかりました。リセット後にテストを再度実行すると、最初の実行で到達したユーザー名に到達するために、この時点までテストを実行する必要があるため、さらに奇妙な 2 番目のエラーが表示されます。この順序は一貫していません。場合によっては、1 つまたは別の部分でエラーが発生し、追跡が困難になることがあります。
問題の 2 つのエラーのコード。
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