Тесты Rspec висят с помощью скрепки - PullRequest
6 голосов
/ 10 июля 2010

В моем приложении есть модель Picture, которая использует Paperclip для прикрепления к ней изображения.

Модель:

class Picture < ActiveRecord::Base
  has_attached_file :image, :default_url => "/system/:attachment/missing.png", :styles => { :small => "100x100#", :medium => "460x460>", :large => "1024x1024>" }

  validates_attachment_presence :image
  validates_attachment_content_type :image, :content_type => [/image\/(x-)?png/i, /image\/(p)?jpeg/i]
  validates_attachment_size :image, :less_than => 5.megabytes

  validates_presence_of :name
  validates_format_of :name, :with => /^[a-z0-9_\-!@#%&()' ]+$/i
end

Когда я запускаю свои тесты, они зависают в этой частитест в журнале:

Processing PagesController#index (for 0.0.0.0 at 2010-07-10 11:29:54) [GET]
  Parameters: {"action"=>"index", "controller"=>"pages"}
  Picture Load (0.2ms)   SELECT * FROM "pictures" LIMIT 1
Rendering template within layouts/application
Rendering pages/index
Completed in 2ms (View: 0, DB: 0) | 200 OK [http://test.host/index]
[paperclip] identify '-format' '%wx%h' '/var/folders/cD/cDCiDnTlH5ehwTjJq1pxYE+++TI/-Tmp-/stream,6515,0.txt[0]' 2>/dev/null

Контроллер My Pages выглядит так:

class PagesController < ApplicationController
  def index
    @picture = Picture.first ? Picture.first : Picture.new
  end
end

Тест для контроллера выглядит так:

describe PagesController do
  describe "GET 'index'" do
    before(:each) do
      get :index
    end

    it "should be successful" do
      response.should be_success
    end

    it "should assign picture" do
      assigns[:picture].should_not be_nil
    end

    it "should assign a valid picture" do
      assigns[:picture].class.should == Picture
    end
  end
end

Myтесты также зависают при запуске rake spec:models, он просто показывает строку

[paperclip] identify '-format' '%wx%h' '/var/folders/cD/cDCiDnTlH5ehwTjJq1pxYE+++TI/-Tmp-/stream,6515,0.txt[0]' 2>/dev/null

в журнале.Мой модельный тест выглядит так:

describe Picture do
  it { should have_attached_file(:image) }
  it { should validate_attachment_presence(:image) }
  it {
    should validate_attachment_content_type(:image).
    allowing('image/png', 'image/x-png', 'image/jpeg', 'image/pjpeg').
    rejecting('text/plain', 'text/xml', 'image/tiff')
  }
  it { should validate_attachment_size(:image).less_than(5.megabytes) }

  it { should validate_presence_of(:name) }
  ["Client's website", "This is a great site!", "my_awes0me-s!te"].each do |phrase|
    it { should allow_value(phrase).for(:name) }
  end
  ["Client's web$ite", "This is a great^ site!", "my_awes;0me-s!te"].each do |phrase|
    it { should_not allow_value(phrase).for(:name) }
  end

  context "is new" do
    it "should have a default missing image" do
      picture = Picture.new
      picture.image.url.should == "/system/images/missing.png"
    end
  end
end

Почему это зависает?(Если я пока запускаю тесты моделей, они движутся медленно, похоже, что все преобразования выполняются, как я могу их отключить?)

1 Ответ

1 голос
/ 28 ноября 2010

У меня такая же проблема с ruby ​​1.8.7 - но на ruby ​​1.9.2

вообще не зависает

Эта ссылка решает проблему для меня.

...