Frage

Ich probiere verschiedene Blogs mit Beispielen für Rails 3 und RSpec aus.Ja, es ist unter Windows, daher wird Windows nicht verwendet.Keine Wahl.Weitermachen ...

Ich kann die Spezifikation entweder mit rspec spec oder rake spec: models ausführen, sodass dies in Ordnung zu sein scheint.Wenn ich jedoch versuche, einen Vorher-Block mit Attributen zu verwenden, schlägt dies beim Erstellen einer Personenklasse mit diesen Attributen fehl.Die anderen Tests sind nur da, um zu zeigen, dass die Spezifikation ausgeführt werden kann.

Ein Personenmodell erstellt und dann die Spezifikation aktualisiert

\ myapp \ spec \ models \ person_spec.rb

require 'spec_helper'

describe Person do

  before(:each) do
    @valid_attributes = {
      :first_name => "Foo", 
      :last_name => "Bar"
    }
  end

  it "should create a new instance given valid attributes" do
    Person.create!(@valid_attributes)
  end

  it "can be instantiated" do
    Person.new.should be_an_instance_of(Person)
  end

  it "can be saved successfully" do
    Person.create.should be_persisted
  end



  #pending "add some examples to (or delete) #{__FILE__}"
end

Hier ist die Ausgabe des Befehls rake spec: models

C:\Users\laptop\Documents\Sites\myapp>rake spec:models
C:/Ruby193/bin/ruby.exe -S rspec ./spec/models/person_spec.rb

Person
←[31m  should create a new instance given valid attributes (FAILED - 1)←[0m
←[32m  can be instantiated←[0m
←[32m  can be saved successfully←[0m

Failures:

  1) Person should create a new instance given valid attributes
     ←[31mFailure/Error:←[0m ←[31mPerson.create!(@valid_attributes)←[0m
     ←[31mActiveRecord::UnknownAttributeError:←[0m
       ←[31munknown attribute: first_name←[0m
←[36m     # ./spec/models/person_spec.rb:13:in `block (2 levels) in <top (required)>'←[0m

Finished in 0.074 seconds
←[31m3 examples, 1 failure←[0m

Failed examples:

←[31mrspec ./spec/models/person_spec.rb:12←[0m ←[36m# Person should create a new instance given valid attributes←[0m
rake aborted!
C:/Ruby193/bin/ruby.exe -S rspec ./spec/models/person_spec.rb failed

Also haben zwei von drei bestanden, nur nicht der mit Attributen.

Gibt es etwas Besonderes, das eingerichtet werden müsste, damit ein Vorher-Block ausgeführt werden kann, oder wie werden Attribute in einem Test mit Rails 3 übergeben?

Gibt es auch eine Möglichkeit, diese 31 m und solche Ausdrucke für jede Spezifikationszeile loszuwerden?

Danke

War es hilfreich?

Lösung 2

Ich sollte dies mit der Antwort aktualisieren.

Das Personenmodell enthielt tatsächlich Vorname und Nachname, aber wie von zwei Personen über dem Fehler, den ich erhielt, festgestellt wurde, wies ActiveRecord darauf hin, dass es nicht gefunden wurde.

Unter Windows wurde Rake db: migr zwei- oder dreimal ausgeführt, um das Problem zu beheben, obwohl es im Modell nicht fehlte.

Wenn Sie mit Windows dev nicht weiterkommen, ist dies möglicherweise eine gute Sache!

Ich konnte Lubuntu endlich auf eine VirtualBox unter Windows 7 setzen und es lief einwandfrei und seitdem habe ich mit anderen Beispielen von dort fortgefahren.

Prost

Andere Tipps

Aus dem Fehler geht hervor, dass ActiveRecord das Attribut: Vorname, das Sie als Teil von @valid_attributes übergeben, nicht finden kann.Das Problem liegt also nicht darin, wie Sie RSpec verwenden, sondern in den Attributen, die ein gültiges Modell enthalten soll.

Überprüfen Sie, ob das Personenmodell ein Feld oder ein Attribut: first_name enthält, und überprüfen Sie die genaue Schreibweise (: first_name vs: firstname oder eine andere Variante)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top