Я новичок в тестировании и рельсах, и сам пытался разобраться, но безуспешно.
У меня есть следующие модели
class Picture < ActiveRecord::Base
belongs_to :product
has_attached_file :image
end
class Product < ActiveRecord::Base
has_many :pictures, :dependent => :destroy
accepts_nested_attributes_for :pictures, :reject_if => lambda { |p| p[:image].blank? }, :allow_destroy => true
end
и контроллер, который, я полагаю, довольно стандартный…
def create
@product = Product.new(params[:product])
if @product.save
redirect_to products_path, :notice => "blah."
else
render :action => "new"
end
end
как бы мне это проверить? Я пробовал что-то подобное, но не могу заставить его работать:
describe ProductsController do
it "adds given pictures to the product" do
product = Factory.build(:product)
product.pictures.build(Factory.attributes_for(:picture))
post :create, :product => product.attributes
Product.where(:name => product[:name]).first.pictures.count.should == 1 # or something
end
end
Вероятно, это как-то связано с тем, как атрибуты передаются в действие create, но как я могу заставить это работать? Я использую rails 3.1.rc5, но я сомневаюсь, что это имеет какое-либо отношение к тому, почему он не работает…
или вы не будете тестировать его вообще, поскольку это базовая функциональность rails и, скорее всего, хорошо протестирована с самого начала?