Скрепка поблочного тестирования загружает с Rspec (направляющие)

Общий новичок Rspec здесь. Запись моих первых тестов сегодня вечером.

У меня есть модель под названием Изображение. Используя скрепку я присоединяю файл, названный фотографией. Стандартный материал. Я выполнил генератор скрепки, и все хорошо работает в производстве и тестовых режимах.

Теперь у меня есть файл спецификации, названный image.rb, и он похож на это (он был создан nifty_scaffold генератором ryanb):

require File.dirname(__FILE__) + '/../spec_helper'

describe Image do

  it "should be valid" do
    Image.new.should be_valid
  end
end

Этот тест перестал работать, и я понимаю, что это из-за моих проверок допустимости модели (т.е. validates_attachment_presence)

Ошибка, которую я получаю:

Errors: Photo file name must be set., Photo file size file size must be between 0 and 1048576 bytes., Photo content type is not included in the list

Таким образом, как я говорю rspec загружать фотографию, когда он запускает мой тест?

Я предполагаю, что это имеет что-то, чтобы сделать с приспособлениями...., возможно, нет все же. Я попытался играть вокруг с ними, но не иметь любую удачу. Для записи я создал папку, названную изображениями в моей папке приспособлений и этих двух файлах, которые я хочу использовать в своих тестах, названы rails.png и grid.png),

Я попытался делать следующее:

it "should be valid" do
  image = Image.new :photo => fixture_file_upload('images/rails.png', 'image/png').should be_valid 

  # I've also tried adding stuff like this
  #image.stub!(:has_attached_file).with(:photo).and_return( true )
  #image.stub!(:save_attached_files).and_return true
  #image.save.should be_true  
end

Но rspec жалуется на "fixture_file_upload", не распознаваемый... Я планирую получить ту книгу Rspec. И я тралил по всей сети для ответа, но, может казаться, ничего не нахожу. Моя тестовая база данных DOES заполняется с некоторыми данными, когда я удаляю проверки из своей модели, таким образом, я знаю, что часть его работает хорошо.

Заранее спасибо,

Править:

images.yml похож на это:

one:
  name: MyString
  description: MyString

two:
  name: MyString
  description: MyString
23
задан stephenmurdoch 13 February 2010 в 00:35
поделиться

3 ответа

Это должно работать с Rails 2.X:

Image.new :photo => File.new(RAILS_ROOT + '/spec/fixtures/images/rails.png')

Начиная с Rails 3, RAILS_ROOT больше не используется, вместо него вы должны использовать Rails.root.

Это должно работать с Rails 3:

Image.new :photo => File.new(Rails.root + 'spec/fixtures/images/rails.png')

Определенно приобретите книгу RSpec, это фантастика.

39
ответ дан 29 November 2019 в 01:05
поделиться

Если кто-то еще найдет это через Google, RAILS_ROOT больше не действует в Rails 3.0. Эта строка должна выглядеть так:

Image.new :photo => File.new(Rails.root + 'spec/fixtures/images/rails.png')

(Обратите внимание на отсутствие косой черты в начале!)

5
ответ дан 29 November 2019 в 01:05
поделиться

Rails.root - это объект пути, поэтому вы можете использовать его следующим образом:

Image.new :photo => Rails.root.join("spec/fixtures/images/rails.png").open

Изменить - вероятно, не работает в Rails 3 ...

  • см. Ответ @Paul Rosania
19
ответ дан 29 November 2019 в 01:05
поделиться
Другие вопросы по тегам:

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