【发布时间】:2021-06-10 21:23:28
【问题描述】:
只是想向我的 Carrierwave Uploader 添加一些基本测试。我从默认生成的测试开始并尝试从那里开始。我收到一个奇怪的错误,不知道从哪里开始。
我有一个多态 Upload 模型,它有:
mount_uploader :file, DocumentUploader
我的 DocumentUploader 有这样的东西:
def store_dir
"#{model.uploadable_type.downcase.pluralize.underscore}/#{model.parent_asset.id}/uploads/#{model.id}/"
end
这使我的商店目录看起来像:
/locations/24/uploads/56
例如当我运行默认测试时:
test "should destroy upload" do
assert_difference('Upload.count', -1) do
delete :destroy, id: @upload
end
assert_redirected_to uploads_path
end
我明白了:
ERROR["test_should_destroy_upload", UploadsControllerTest,1.9893769259997498]
test_should_destroy_upload#UploadsControllerTest (1.99s)
NoMethodError: NoMethodError: undefined method `id' for nil:NilClass
app/uploaders/document_uploader.rb:34:in `store_dir'
在我的上传装置中,我设置了多态关联等。model 未设置为 DocumentUploader 中的可上传关联,即它为零。
到目前为止,我的所有其他测试都工作正常,我的上传器在生产和开发等方面工作正常。我确信我在设置中遗漏了一些微不足道的东西,或者这是 Carrierwave 特定的问题。
【问题讨论】:
标签: ruby-on-rails carrierwave minitest