Dlaczego podczas uruchamiania narzędzia Rspec pojawia się niezdefiniowany błąd metody „mają”?


Niedawno zaktualizowałem do Rails 4 i wszystko działa dobrze z wyjątkiem moich testów Rspec.
require 'spec_helper'describe Invoice do before :each do
@user = FactoryGirl.create(:activated_user)
person = FactoryGirl.create(:person, :user => @user, :company => nil)
@project = FactoryGirl.create(:project, :user => @user, :person_ids => [person.id], :invoice_recipient_id => person.id)
end it "has a valid factory" do
expect(FactoryGirl.build(:invoice, :project => @project, :user => @user)).to be_valid
end it "is invalid without a number" do
expect(FactoryGirl.build(:invoice, :project => @project, :user => @user, :number => nil)).to have(1).errors_on(:number)
endend

Podczas wykonywania tych testów pojawia się ten błąd:
Failure/Error: expect(FactoryGirl.build(:invoice, :project => @project, :user => @user, :number => nil)).to have(1).errors_on(:number)
NoMethodError:
undefined method `have' for #<RSpec::ExampleGroups::Invoice_2:0x009ge29360d910>
# ./spec/models/invoice_spec.rb:16:in `block (2 levels) in <top (required)>'

Czy ktoś może mi powiedzieć, czego tu brakuje?
Już to wygooglowałem, ale nie zadziałało. Metoda
have
jest właściwie dość standardowa w Rspec i nie rozumiem, dlaczego nie powinna działać.
Dzięki za wskazówki.
Zaproszony:
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Rodzina dopasowań
have
została wycofana w RSpec 2.99 i została przeniesiona do osobnego

rspec-collection_matchers
https://github.com/rspec/rspec-collection_matchers
gem z RSpec 3.0. Jest to omówione w

http://myronmars.to/n/dev-blog ... eased
http://myronmars.to/n/dev-blog ... eased
co również daje sugerowane podejście migracji do 3.0. W szczególności zaleca zainstalowanie/używanie RSpec 2.99, aby wyświetlić komunikaty o zaniechaniu związane z elementami, które zostały usunięte/przeniesione w wersji 3.0.
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

W ostatnich wersjach rspec „have” jest przestarzałe, ale nadal można go używać za pośrednictwem

rspec-collection_matchers
https://github.com/rspec/rspec-collection_matchers
gem.
# Gemfile...
gem 'rspec-collection_matchers', group: :test...# spec/spec_helper.rb...
require 'rspec/collection_matchers'....
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

OK, rozumiem.
Mam zły numer wersji w moim Gemfile.
Przed:
gem 'rspec-rails', '~> 3.0.0.beta'

Po:
gem 'rspec-rails'

Aby odpowiedzieć na pytania, Zaloguj się lub Zarejestruj się