Я пытаюсь передать эту RspecTrouble проходя через 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. (например, он просто возвращается как «stuart little»).
Я полностью смущен, почему это происходит, поэтому я надеюсь, что кто-то может пролить свет на меня.
Извините за все мои вопросы, но почему attr_accessor не достаточно для сеттера, что вам нужен титульный = сеттер метод? (и спасибо за ответ!) – Stephanie
@Stephanie: 'attr_accessor' генерирует простой сеттер, например' @title = title'. Если бы вы использовали этот метод, он бы не назвал ваш метод 'capital', он просто присвоил бы строку, не предварительно заглавную. Но если вы используете пользовательский метод 'title =' из моего ответа, он назначит строку изменения: '@title = capital (title)'. – spickermann
Это намного больше смысла! Спасибо! – Stephanie