Ich versuche folgendes Szenario zu testen:
-> Ich habe ein Modell namens Team, das gerade dann sinnvoll ist, wenn es von einem Benutzer erstellt wurde. Daher muss jede Teaminstanz mit einem Benutzer verknüpft sein.
Um das zu testen, habe ich Folgendes getan:
describe Team do
...
it "should be associated with a user" do
no_user_team = Team.new(:user => nil)
no_user_team.should_not be_valid
end
...
end
Was zwingt mich, das Teammodell zu ändern als:
class Team < ActiveRecord::Base
# Setup accessible (or protected) attributes for your model
attr_accessible :name, :user
validates_presence_of :name
validates_presence_of :user
belongs_to :user
end
Scheint das für Sie richtig? Ich mache mir nur Sorgen, das Benutzerattribut als zugänglich zu machen (Massenzuordnung).
Ich verwende normalerweise diesen Ansatz:
describe User do
it "should have many teams" do
t = User.reflect_on_association(:teams)
expect(t.macro).to eq(:has_many)
end
end
Eine bessere Lösung wäre die Verwendung des Edelsteins shoulda , mit dem Sie einfach Folgendes tun können:
describe Team do
it { should belong_to(:user) }
end
it { Idea.reflect_on_association(:person).macro.should eq(:belongs_to) }
it { Idea.reflect_on_association(:company).macro.should eq(:belongs_to) }
it { Idea.reflect_on_association(:votes).macro.should eq(:has_many) }
class MicroProxy < ActiveRecord::Base
has_many :servers
end
describe MicroProxy, type: :model do
it { expect(described_class.reflect_on_association(:servers).macro).to eq(:has_many) }
end
Sie können dies am einfachsten tun.
it { expect(classroom).to have_many(:students) }
it { expect(user).to have_one(:profile }
ein nützlicher Link als Referenz. https://Gist.github.com/kyletcarlson/6234923