Jestem całkiem nowy w testowaniu i szynach i próbowałem sam to rozgryźć, ale bez powodzenia.Testowanie zagnieżdżonych atrybutów rspec z rspec
mam następujące modele
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
oraz sterownik, który jest dość standardowy, myślę ...
def create
@product = Product.new(params[:product])
if @product.save
redirect_to products_path, :notice => "blah."
else
render :action => "new"
end
end
jak bym go o to i przetestować? Próbowałem coś takiego ale nie mogę zmusić go do pracy:
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
To chyba ma coś wspólnego ze sposobem, atrybuty są przekazywane do działania stworzenia, ale w jaki sposób można uzyskać to do pracy? Używam rails 3.1.rc5, ale wątpię, że ma to coś wspólnego z tym, dlaczego nie działa ...
czy nie przetestowałbyś tego w ogóle, skoro jest to podstawowa funkcja szyn i najprawdopodobniej dobrze przetestowana na początek?
nie zgadzam się z tym. Nie będziesz przechwytywał regresji, jeśli nie przetestujesz i nie masz żadnych specyfikacji ani dokumentacji. – phikes
@phikes Widziałeś część, w której powiedziałem przetestować ją za pomocą testów integracyjnych? – jonnii