Rspec有(n).items未定义的方法
我正在尝试遵循code.tuts的指南,我一直收到错误。
这是我的图书馆规范:
require 'spec_helper' describe Library do before :all do lib_arr = [ Book.new("JavaScript: The Good Parts", "Douglas Crockford", :development), Book.new("Dont Make me Think", "Steve Krug", :usability), ] File.open "books.yml", "w" do |f| f.write YAML::dump lib_arr end end before :each do @lib = Library.new "books.yml" end describe "#new" do context "with no parameters" do it "has no book" do lib = Library.new expect(lib).to have(0).books end end context "with a yaml file name parameters" do it "has two books" do expect(@lib).to_have(0).books end end end it "returns all the books in a given category" do expect(@lib.get_books_in_category(:development).length).to eql 1 end it "accepts new books" do @lib.add_book(Book.new("Designing for the Web", "Mark Boulton", :design)) expect(@lib.get_book("Designing for the Web")).to be_an_instance_of Book end it "saves the library" do books = @lib.books.map { |book| book.title} @lib.save lib2 = Library.new 'books.yml' books2 = lib2.books.map { |book| book.title } expect(books).to eql books2 end end
我得到的是未定义的。 我发现这是我的台词
expect(@lib).to have(0).books expect(lib).to have(0).books
我的语法过时了吗? 我用谷歌搜索,我找不到它。
从RSpec 3中删除了have_at_least
/ have_exactly
, have_at_least
和have_at_most
匹配器。它们现在位于单独的rspec-collection_matchers gem中。
或者,正如zishe所说,不是安装gem,你可以使用eq
而不是have_exactly
/ have_exactly
,并且be >=
而不是have_at_least
并且be <=
而不是have_at_most
。
资料来源: http : //myronmars.to/n/dev-blog/2014/05/notable-changes-in-rspec-3