2010-04-29 11 views
0

Je rencontre des problèmes avec le test de vue RSpec. J'utilise des ressources imbriquées et le modèle avec une association belongs_to.RSpec: impossible de convertir l'image en chaîne lors de l'utilisation de la ressource imbriquée

Voici ce que j'ai jusqu'à présent:

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 

L'erreur que je reçois:

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' 

En regardant le code de rails où l'exception se produit est pas très révélateur. Des idées sur comment je peux affiner ce qui se passe ici? Une chose que j'ai essayée appelait form_for directement à partir de l'exemple et j'ai eu une erreur différente saisissant l'absence de 'polymorphic_path' défini sur Spec :: Rails :: Example :: ViewExampleGroup :: Subclass_4: 0xblah. Je ne sais pas si cela signifie vraiment quelque chose.

Répondre

0

Ok. Cela n'a rien à voir avec Rspec et tout ce qui a trait à l'utilisation appropriée des ressources imbriquées et des aides-rails.

Apparemment, la bonne façon de gérer les ressources imbriquées dans une vue est:

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

Il est juste que le message d'erreur est pas utile.