Fala galera!
Vai uma dica para quem precisa testar com rspec um controle que esta utilizando nested attributes.
Digamos que temos um model assim e que criou toda estrutura utilizando o script/generate rspec_scaffold product:
class Product < ActiveRecord::Base
#validates
validates_presence_of :name
validates_presence_of :line_id
#associations
has_many :photos, :as => :photograph, :dependent => :delete_all
#nested attributes
accepts_nested_attributes_for :photos, :allow_destroy => true,
:reject_if => proc { |s| s['image'].blank?}
end
Provavelmente na hora que rodar um rake spec, você terá um erro em:
describe "GET new" do
it "assigns a new product as @product" do
Product.stub!(:new).and_return(mock_product)
get :new
assigns[:product].should equal(mock_product)
end
end
Então vamos alterar para que este teste passe:
describe "GET new" do
it "assigns a new product as @product" do
product_model = mock_model(Product, :photos => mock_model(Photo))
Product.stub!(:new).and_return product_model
product_model.photos.should_receive(:build)
get :new
assigns[:product].should equal(product_model)
end
end
Pronto, agora seu teste ira passar!



Bacana!
Mas seria interessante você explicar o porque das coisas ai =)
Valeu!