Ruby on rails Rspec&;回形针:坏了,可以取吗?
我在rspec控制器测试中遇到问题,无法通过rspec中可访问的attr_…但无法从控制台访问Ruby on rails Rspec&;回形针:坏了,可以取吗?,ruby-on-rails,ruby-on-rails-3,rspec,paperclip,Ruby On Rails,Ruby On Rails 3,Rspec,Paperclip,我在rspec控制器测试中遇到问题,无法通过rspec中可访问的attr_…但无法从控制台访问 post :create, :banner => valid_attributes 失败了,但是 Banner.create!(valid_attributes) is accepted. 如果我从banners模型中取出attr_,或者取出validates_附件_presence:bannerimage,它就会工作。尝试添加bannerimage_属性和生成的四个回形针:bannerim
post :create, :banner => valid_attributes
失败了,但是
Banner.create!(valid_attributes) is accepted.
如果我从banners模型中取出attr_,或者取出validates_附件_presence:bannerimage,它就会工作。尝试添加bannerimage_属性和生成的四个回形针:bannerimage列到我的属性可访问-没有乐趣。尝试取出其他回形针验证器(内容类型、大小)-仍然没有乐趣。非常感谢您的任何建议,我完全不知所措
相关代码如下:
RSPEC测试的相关位:
def valid_attributes
demo_image = File.open(File.join(Rails.root, "spec", "samples", "laptop1.jpg"))
{
:name => 'Test Spec Banner',
:bannerimage => demo_image
}
end
describe "POST create" do
describe "with valid params" do
it "creates a new Banner" do
expect {
post :create, :banner => valid_attributes
}.to change(Banner, :count).by(1)
end
end
型号:
class Banner < ActiveRecord::Base
attr_accessible :name, :url, :bannerimage
has_attached_file :bannerimage, :styles => { :full => "960x", :thumb => "100x" }
validates_attachment_content_type :bannerimage, :content_type => [ 'image/jpg', 'image/jpeg', 'image/gif', 'image/png'], :message => 'file must be a gif, jpeg or png image'
validates_attachment_size :bannerimage, :less_than => 3.megabytes
validates_presence_of :name
validates_attachment_presence :bannerimage
validates_uniqueness_of :name
has_many :pages, :dependent => :nullify
def to_s
name
end
end
您的代码似乎没有任何明显的问题会导致这种情况。需要注意的一点是,
name
上有唯一性约束,但是valid\u属性总是返回相同的名称。这不是你的问题所在,我只是说这是需要记住的
我只能给你一些建议,告诉你如何亲自调试。您可以通过分配(:banner)
访问等级库中新创建的横幅。所以,你可以这样做:
describe "POST create" do
describe "with valid params" do
it "creates a new Banner" do
expect {
post :create, :banner => valid_attributes
pp assigns(:banner).errors
}.to change(Banner, :count).by(1)
end
end
这将把横幅的错误转储到运行测试的控制台。如果未保存横幅,则意味着该横幅无效,因此首先要检查生成了哪些错误。您还可以使用pp assigns(:banner)
转储整个横幅,以查看其所有属性
对不起,我帮不了你。我本想在评论中写这篇文章,但我需要好的格式。您还没有发布控制器代码。你发布的规范已经通过了,所以问题可能就在那里。您还没有说明是否可以从web界面通过标准表单创建横幅。
describe "POST create" do
describe "with valid params" do
it "creates a new Banner" do
expect {
post :create, :banner => valid_attributes
pp assigns(:banner).errors
}.to change(Banner, :count).by(1)
end
end