1
我想通过这个rspec的麻烦经过rspec的
describe "title" do
it "should capitalize the first letter" do
@book.title = "inferno"
expect(@book.title).to eq("Inferno")
end
it "should capitalize every word" do
@book.title = "stuart little"
expect(@book.title).to eq("Stuart Little")
end
有了这个代码
class Book
attr_accessor :title
def initialize(title="")
@title = capital(title)
end
def capital(title)
articles = %w(the a an and of in the)
new_title = []
title.split.each do |w|
articles.include?(w)? new_title << w : new_title << w.capitalize
end
new_title[0] = new_title[0].capitalize
new_title.join(" ")
end
end
book = Book.new("stuart little")
puts book.title
我也得到“精灵鼠小弟”,当我运行的代码,但我不断收到错误当我通过rspec运行它时。 (例如,它只是作为“斯图特小”返回)。
我很困惑为什么会发生这种情况,所以我希望有人能为我揭开一些光。
对不起,我的所有问题,但为什么是attr_accessor不够的,你需要一个标题= setter方法二传手? (并感谢您的回答!) – Stephanie
@Stephanie:'attr_accessor'生成一个简单的setter,比如'@title = title'。如果你使用这种方法,它不会调用你的'大写'方法,它只会分配字符串而不被大写。但是如果你在我的答案中使用自定义的'title ='方法,它会分配改变字符串:'@title = capital(title)'。 – spickermann
这样做更有意义!谢谢! – Stephanie