0

小文字で入力する場合は大文字にする必要がある 1 つの属性: title を持つ Book クラスを作成しようとしています。私のコードは repl.it で動作しますが、rspec にはまだ NoMethodError が表示されます (undefined method 'title' for #(Book.... @title="Inferno") 私のコード:

class Book
    def initialize(title=nil)
        @title = title
    end
    def title=(new_title)
        title = new_title.capitalize!

    end

end

Rspec:

require 'book'

describe Book do

  before do
    @book = Book.new
  end

  describe 'title' do
    it 'should capitalize the first letter' do
      @book.title = "inferno"
      @book.title.should == "Inferno"
    end

ありがとうございました。

4

2 に答える 2

0

これを試してください。

class Book

  attr_reader :title

    def initialize(title=nil)
      @title = title && title.capitalize!
    end

    def title=(new_title)
        @title = new_title && new_title.capitalize!
    end

end
于 2013-07-02T07:20:26.567 に答える
-1
class Book
  def initialize(title=nil)
    @title = title
  end

  def title=(new_title)
    title = new_title.capitalize!
    puts title
    puts @title
  end

  def title
    @title
  end

end

b = Book.new('hello')
b.title = 'hello'

--output:--
Hello
hello

@title と title は 2 つの異なる変数です。

于 2013-07-02T07:17:55.297 に答える