J'aimerais bloquer la méthode #class d'un objet fantaisie :
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
A la ligne 5 de ce programme, je bloque la méthode #class, afin de permettre des choses comme @john.class.name. Est-ce que c'est la bonne façon de faire ? Est-ce qu'il y aura des effets secondaires néfastes ?
Editer :
La classe Letter se présente comme suit :
class Letter < ActiveRecord::Base
belongs_to :to, :polymorphic => true
[...]
end
Je me demande si ActiveRecord obtient le nom de la classe du champ :to à l'aide de la fonction to.class.name
ou par d'autres moyens. C'est peut-être à cela que sert la méthode class_name d'ActiveRecord::Base ?