0

私はhttp://goo.gl/7Dlv5をフォローしています。ビデオはクラスを作成します

class Book

end

テストspec/book_spec.rbは次のようになります。

require "spec_helper"

describe Book do

    before :each do
        @book = Book.new "Title","Author", :category
    end

    describe "#new" do
        it "returns a new book object" do
            @book.should be_an_instance_of Book
        end
    end
end

作者のテストに合格します。それは私にとって失敗します。それで、ルビーで何かが変わったと思いますか?または、コードで見つけられないタイプミスかもしれません。手伝ってもらえますか?

これが私の結果です。ありがとうございました。

Failures:

  1) Book#new returns a new book object
     Failure/Error: @book = Book.new "Title","Author", :category
     ArgumentError:
       wrong number of arguments(3 for 0)
     # ./spec/book_spec.rb:6:in `initialize'
     # ./spec/book_spec.rb:6:in `new'
     # ./spec/book_spec.rb:6:in `block (2 levels) in <top (required)>'

Finished in 0.00058 seconds
1 example, 1 failure

Failed examples:

rspec ./spec/book_spec.rb:11 # Book#new returns a new book object
4

1 に答える 1

1

これは、3つの引数でBook呼び出すクラスのそれぞれのコンストラクターを定義する必要があることは明らかです。Book.new

上記のリンクは明確にそれを示しています(テキストのトランスクリプトを見てください):

# These will fail, so here’s the code for Book to make them pass:

class Book
    attr_accessor :title, :author, :category
        def initialize title, author, category
            @title = title
            @author = author
            @category = category
        end
end
于 2013-03-25T04:24:56.390 に答える