Warum bekomme ich eine " undefined method 'haben' Fehler beim ausführen von Rspec?

Ich vor kurzem ein Upgrade auf Rails 4 und alles funktioniert gut, außer für meine Rspec tests.

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)
  end

end

Beim ausführen dieser tests bekomme ich diesen Fehler:

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)>'

Kann mir jemand sagen, was ich hier vermisst?

Ich es schon gegoogelt, aber nichts kam. Die have Methode ist eigentlich ziemlich standard in Rspec und ich kann nicht sehen, warum es nicht funktionieren sollte.

Vielen Dank für jegliche Hinweise.

  • Versuchen Sie, vorbei an einem block rechnen und nicht einer Instanz (D. H., erwarten { })
  • Danke, aber das ändert nichts. Noch immer die gleichen Fehler.
  • OK, gebucht einige weitere details vor.
  • Für mich ist alles richtig (genau so, wie die offiziellen Beispiele). Wenn ich du wäre würde ich versuchen zu überprüfen, in diesem Fall expect(Invoice.new).to have... (verwenden Sie die Klasse, statt der Fabrik - Sie haben den gleichen Fehler?). Dann versuchen Sie, die version prüfen und vielleicht zu aktualisieren Juwel rspec-rails. Eine weitere Idee: nutzt du spork, zeus oder smth like this? Vielleicht etwas falsch ist in spec_helper.rb
  • Sorry about that, den Sie gerade entfernt die ersten beiden Zeilen. Jetzt sieht es genau wie in meiner app.
  • Ich lief einfach rails g rspec:install wieder aktualisieren meine spec_helper.rb - Datei. Dann versuchte expect(Invoice.new).to have(1).errors_on(:number). Aber es gibt mir genau die gleichen Fehler wie vorher.
  • OK, gelöst und unten geschrieben. Vielen Dank für Ihre Hilfe!

InformationsquelleAutor Tintin81 | 2013-12-05
Schreibe einen Kommentar