0
我正在使用ruby-1.9.3-p0
。我的軟件包包括添加額外示例後發生rspec中的堆棧級別過深錯誤
Using rails (3.1.3)
Using rspec-core (2.7.1)
Using rspec-expectations (2.7.0)
Using rspec-mocks (2.7.0)
Using rspec (2.7.0)
Using rspec-rails (2.7.0)
我在我的規範中出現了這個非常奇怪的問題。我有大約5例子,像這樣:
describe "Example" do
context "when adding stuff" do
it "should do stuff" do
# ...
end
it "..." do
# ...
end
end
context "when doing other stuff" do
it "..." do
# ...
end
it "..." do
# ...
end
it "..." do
# ...
end
end
end
不過,如果我添加一個額外的例子中,context "when doing other stuff"
塊中,我得到這個錯誤
1) Example when adding stuff should do stuff
Failure/Error: Unable to find matching line from backtrace
stack level too deep
# /../../activesupport-3.1.3/lib/active_support/duration.rb:55
2) Example when adding stuff should do stuff
Failure/Error: Unable to find matching line from backtrace
stack level too deep
# /../../activesupport-3.1.3/lib/active_support/core_ext/time/calculations.rb:266
是什麼讓這個奇怪的是,如果我註釋掉
it "should do stuff" do
# everything commented out
end
它仍然發生。即使我評論了我添加的新示例
it "new example within when doing stuff context" do
# everything commented out
end
它仍然會拋出錯誤。 然後,如果我註釋掉每個示例中的所有代碼,它仍然會發生!只有當我完全刪除第一個it "should do stuff"
示例時,它纔會消失。有沒有人經歷過這個?謝謝。
編輯:我還想補充一件事。當運行如下所有規格:
rspec
所有我的例子傳遞和運行沒有堆棧溢出occuring。然而,這只是如果我運行規範獨奏會出現這種情況:
rspec spec/models/example_spec.rb
聽起來就像你有一個方法調用自己的某個地方(調用自己,調用自己,調用自己...),或者是一個遞歸方法,它不會很快觸及其退出條件,導致堆棧溢出。查看最近添加的其他代碼,或者查看代碼調用的代碼,您可能會發現問題的根源。 – jefflunt
但爲什麼只是簡單地添加一個額外的例子(甚至空白)導致堆棧溢出。爲什麼不在之前? – axsuul
我不知道。你能發佈你的實際代碼而不是僞代碼嗎?不要成爲一個混蛋,但如果你給我們理論的代碼,我們只能給你理論上的答案,你知道嗎? – jefflunt