gpt4 book ai didi

ruby-on-rails - 使用rspec测试Rails的嵌套属性

转载 作者:行者123 更新时间:2023-12-04 06:12:40 25 4
gpt4 key购买 nike

我对测试和Rails很陌生,并试图自己弄清楚,但是没有任何运气。

我有以下型号

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

我猜是一个非常标准的 Controller
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 Action 的方式有关,但是如何使它起作用呢?我正在使用rails 3.1.rc5,但是我怀疑这与为什么它不起作用没有关系……

还是因为它是基本的Rails功能并且一开始就经过充分的测试,您是否根本不会对其进行测试?

最佳答案

正如您所说,您实际上并不需要进行测试,因为它会被基本的Rails功能所覆盖,而类似的东西也应该被集成测试所彻底覆盖。

但是,如果您想测试这种最好的方法,那就是在开发日志中添加尾部,并查看发布到操作中的内容,然后将其复制并粘贴到测试中,然后根据需要进行修改。

不幸的是,使用属性或factory_girl属性不会减少它。

关于ruby-on-rails - 使用rspec测试Rails的嵌套属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7044433/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com