私はモックオブジェクトの#classメソッドをスタブにしたいと思います:Ruby on RailsアプリケーションでRSpecを使用する場合、Mockオブジェクトの#classメソッドをスタブすることはできますか?
describe Letter do
before(:each) do
@john = mock("John")
@john.stub!(:id).and_return(5)
@john.stub!(:class).and_return(Person) # is this ok?
@john.stub!(:name).and_return("John F.")
Person.stub!(:find).and_return(@john)
end
it.should "have a valid #to field" do
letter = Letter.create!(:to=>@john, :content => "Hello John")
letter.to_type.should == @john.class.name
letter.to_id.should == @john.id
end
[...]
end
は、このプログラムの5行目で、私は@ john.class.nameのようなものを可能にするために、#classメソッドスタブ。これは正しい方法ですか?悪い副作用はありますか?
編集:
文字クラスは、次のようになります。フィールドのクラス名にto.class.name
または他の手段によって:
class Letter < ActiveRecord::Base
belongs_to :to, :polymorphic => true
[...]
end
私はActiveRecordのが取得するかどうかを疑問に思います。多分、これはclass_nameメソッドがActiveRecord :: Baseのためのものでしょうか?
私はそれに対して法律の知識がない...私はそれは 'legal'だと思う;):) –
私は刑務所に行くのが怖かった! ;-) – MiniQuark