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