以下是來自Test-First.org的練習#5(愚蠢塊)的一部分,我嘗試在學習時嘗試破解我自己,準備一個Ruby類。初學者RSpec:需要幫助編寫Ruby代碼來通過RSpec測試(傻瓜塊練習)
每個練習都附帶一個RSpec'_spec.rb'文件,用戶需要編寫相應的Ruby代碼'.rb'文件,並繼續「耙」它直到所有RSpec測試(示例)都是滿意。至少這是我的解釋,並且我已經能夠完成前四個練習,但是,本練習中的RSpec語法讓我難以置信。 (不幸的是,我不僅僅是編程方面的新手,我對RSpes來說絕對是新手,我還沒有能夠在線找到一個很好的新手級RSpec/TDD介紹)。
因此,我希望RSpec專家可能會提供幫助。基本上,我想知道下面的RSpec語法告訴我寫代碼的究竟是什麼?
require "silly_blocks"
describe "some silly block functions" do
describe "reverser" do
it "reverses the string returned by the default block" do
result = reverser do
"hello"
end
result.should == "olleh"
end
...
我認爲我寫了一個叫做「反向」,它接受一個字符串參數的方法,並返回刺痛逆轉,如:
def reverser(string)
return string.reverse
end
唉,這顯然是不正確的 - 耙悲慘的失敗了:
some silly block functions
reverser
reverses the string returned by the default block (FAILED - 1)
Failures:
1) some silly block functions reverser reverses the string returned by the def
ault block
Failure/Error: result = reverser do
ArgumentError:
wrong number of arguments (0 for 1)
# ./05_silly_blocks/silly_blocks.rb:3:in `reverser'
# ./05_silly_blocks/silly_blocks_spec.rb:15:in `block (3 levels) in <top (r
equired)>'
我懷疑它是與傳遞「默認代碼塊」,但我不知道如何結構。在這個練習中有更多的寫法,但是,如果我能夠弄清楚最初的一個,我想我可以解決其餘的問題!
非常感謝Danke sehr,Muchas gracias !! :)
好答案;我會補充說,除非你只是簡單地調用它,否則你應該更喜歡第一個版本(帶'yield')。 – 2013-05-01 13:28:46
感謝您的澄清。 – 2013-05-01 13:47:22
@ mind.blank:謝謝,就是這樣! RSpec文件進行測試,所以在我的情況下,我實際上並不需要調用該方法。找到一個RSpec介紹截屏,會給它一個旋風。 – pete 2013-05-01 20:14:45