Ruby on rails 将活动存储文件附加到设备
文档仅显示将文件附加到模型()的方法 固定装置怎么样 在我的模型中,我尝试了Ruby on rails 将活动存储文件附加到设备,ruby-on-rails,ruby-on-rails-5,fixtures,rails-activestorage,Ruby On Rails,Ruby On Rails 5,Fixtures,Rails Activestorage,文档仅显示将文件附加到模型()的方法 固定装置怎么样 在我的模型中,我尝试了文件和文件附件键,但都不起作用 我必须为ActiveStorage::Attachment和/或ActiveStorage::Blob显式创建fixture文件吗?在我的测试中,我发现我必须使用fixture\u file\u upload进行附加。下面是RSpec中的两个示例,但我相信fixture\u file\u upload方法也应该适用于minitest。关键是在顶部包含ActionDispatch::Test
文件
和文件附件
键,但都不起作用
我必须为
ActiveStorage::Attachment
和/或ActiveStorage::Blob
显式创建fixture文件吗?在我的测试中,我发现我必须使用fixture\u file\u upload
进行附加。下面是RSpec中的两个示例,但我相信fixture\u file\u upload
方法也应该适用于minitest。关键是在顶部包含ActionDispatch::TestProcess
(除非您使用的是minitest,否则我认为它在没有包含的情况下是可用的)
附件文件保存在:spec/fixturs/files/filename.gif中
附件的型号规格
require 'rails_helper'
include ActionDispatch::TestProcess
RSpec.describe Whatever, type: :model do
it 'is valid/invalid depending on file presence' do
file = fixture_file_upload(Rails.root.join('spec/fixtures/files', 'parrot.gif'), 'image/gif')
expect(SomeClass.new(an_attribute: 'something', file: file)).to be_valid
expect(SomeClass.new(an_attribute: 'something').to be_invalid
end
end
请求规格
require 'rails_helper'
include ActionDispatch::TestProcess
RSpec.describe "whatever", type: :request do
file = fixture_file_upload(Rails.root.join('spec/fixtures/files', 'parrot.gif'), 'image/gif')
describe 'POST on whatever controller' do
it 'saves the record when a file is attached' do
expect{
post whatever_path, params: { params: { file: file } }
}.to change { WhateverModel.count }.by(1)
end
end
end
也许我的问题还不够清楚,但我说的是在YAML fixture文件中附加文件,而不是在测试中。看起来这是可能的:虽然我同意这个答案的结论,但有比使用
.attach
或fixture\u file\u upload
将其放在YAML中更简单的测试方法