以下是来自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