RSpec: невозможно преобразовать изображение в строку при использовании вложенного ресурса - PullRequest
0 голосов
/ 29 апреля 2010

У меня проблемы с тестированием RSpec. Я использую вложенные ресурсы и модель с ассоциацией own_to.

Вот что у меня есть:

describe "/images/edit.html.erb" do
  include ImagesHelper

  before(:each) do
    @image_pool = stub_model(ImagePool, :new_record => false,
                             :base_path => '/')
    assigns[:image] = @image =
      stub_model(Image,
                 :new_record? => false,
                 :source_name => "value for source_name",
                 :image_pool => @image_pool)
  end

  it "renders the edit image form" do
    render

    response.should have_tag("form[action=#{image_path(@image)}][method=post]") do
      with_tag('input#image_source_name[name=?]', "image[source_name]")
    end
  end
end

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

ActionView::TemplateError in '/images/edit.html.erb renders the edit image form'
can't convert Image into String
On line #3 of app/views/images/edit.html.erb

    1: <h1>Editing image</h1>
    2:
    3: <% form_for(@image) do |f| %>
    4:   <%= f.error_messages %>
    5:
    6:   <p>

    app/views/images/edit.html.erb:3
    /opt/dtcm/railstest/lib/ruby/gems/1.9.1/gems/rspec-rails-1.3.2/lib/spec/rails/extensions/action_view/base.rb:27:in `render_with_mock_proxy'
    /opt/dtcm/railstest/lib/ruby/gems/1.9.1/gems/rspec-rails-1.3.2/lib/spec/rails/example/view_example_group.rb:170:in `render'

Просмотр кода рельсов, где происходит исключение, не очень показателен. Любые идеи о том, как я могу сузить, что здесь происходит?

Одна вещь, которую я попробовал, вызывал form_for напрямую из примера, и я получил другую ошибку, связанную с отсутствием 'polymorphic_path', определенного в Spec :: Rails :: Example :: ViewExampleGroup :: Subclass_4: 0xblah. Не уверен, что это действительно что-то значит.

1 Ответ

0 голосов
/ 29 апреля 2010

Хорошо. Это не имеет ничего общего с Rspec и не связано с правильным использованием вложенных ресурсов и помощников rails.

Видимо, правильный способ обработки вложенных ресурсов в представлении:

<% form_for [@image_pool, @image] do |f| %>

Просто сообщение об ошибке не помогает.

...