модульный тест в направляющих - модель со скрепкой

Я пытаюсь записать тест для модели с изображением, с помощью скрепки. Я использую значение по умолчанию среды тестирования, нет должен иметь или rspec. В этом контексте, как я должен протестировать его? Я должен действительно загрузить файл? Как я должен добавить файл к приспособлению?

33
задан Simone Carletti 13 December 2009 в 15:48
поделиться

2 ответа

Добавить файл к модели очень просто. Например:

@post = Post.new
@post.attachment = File.new("test/fixtures/sample_file.png")
# Replace attachment= with the name of your paperclip attachment

В этом случае вы должны поместить файл в каталог test / fixtures .

Я обычно делаю небольшой помощник в моем test_helper.rb

def sample_file(filename = "sample_file.png")
  File.new("test/fixtures/#{filename}")
end

Затем

@post.attachment = sample_file("filename.txt")

Если вы используйте что-то вроде Factory Girl вместо светильников, это станет еще проще.

68
ответ дан 27 November 2019 в 17:46
поделиться

Это находится в Rspec, но его можно легко переключить

before do # setup
  @file = File.new(File.join(RAILS_ROOT, "/spec/fixtures/paperclip", "photo.jpg"), 'rb')
  @model = Model.create!(@valid_attributes.merge(:photo => @file))
end

it "should receive photo_file_name from :photo" do # def .... || should ....
  @model.photo_file_name.should == "photo.jpg"
  # assert_equal "photo.jpg", @model.photo_file_name
end

Поскольку Paperclip довольно хорошо протестирован, я обычно не слишком сосредотачиваюсь на акте «загрузки», если только я не м делаю что-то необычное. Но я постараюсь больше сосредоточиться на обеспечении того, чтобы конфигурации насадки в зависимости от модели, которой она принадлежит, отвечали моим потребностям.

it "should have an attachment :path of :rails_root/path/:basename.:extension" do
  Model.attachment_definitions[:photo][:path].should == ":rails_root/path/:basename.:extension"
  # assert_equal ":rails_root/path/:basename.:extension", Model.attachment_definitions[:photo][:path]
end

Все полезности можно найти в Model.attachment_definitions .

16
ответ дан 27 November 2019 в 17:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: