[rspec-users] Scaffold views spec failing

ben rooney ben.rooney62 at googlemail.com
Tue Apr 6 19:44:08 EDT 2010


Forgive a very nooooob question. I am trying to get my head around all of this.
Have a couple of simple models (weird spelling of tipe was in case
type was a reserved word ...). They were all generated with the
rspec_scaffold generator

class Category < ActiveRecord::Base
	has_many :tipes
	validates_uniqueness_of :name	
	validates_presence_of :name
end

class Tipe < ActiveRecord::Base
         belongs_to :category
	validates_uniqueness_of :name	
	validates_presence_of :name
end

I have a line in my tipes/index.html.erb
<%=h tipe.category.name %>

All works just fine in the development environment, but when I run
autospec, it fails with the the following error:
"ActionView::TemplateError in '/tipes/index.html.erb renders a list of
tipes' undefined method `name' for nil:NilClass"

The tipes/index.html.erb_spec.rb is the standard rspec_scaffold generated one :

require 'spec_helper'

describe "/tipes/index.html.erb" do
  include TipesHelper

  before(:each) do
    assigns[:tipes] = [
      stub_model(Tipe,
        :name => "value for name",
        :live => false,
        :category_id => 1
      ),
      stub_model(Tipe,
        :name => "value for name",
        :live => false,
        :category_id => 1
      )
    ]

  end

  it "renders a list of tipes" do
    render
    response.should have_tag("tr>td", "value for name".to_s, 2)
    response.should have_tag("tr>td", false.to_s, 2)
    response.should have_tag("tr>td", 1.to_s, 2)
  end
end

Clearly there is some problem with the association - it isn't
understanding it. So my dumb nooob question is ... what do I do to get
this to work? If I leave the line in the index.html.erb as <%=h
tipe.category_id %> it is all sweetness and light. If I change it ot
<%=h tipe.category.name %> the world is a dark, cold place...

(PS - I don't really understand the assigns[:tipe] thing either ...)


(this is the error trace
    app/views/tipes/index.html.erb:14
    app/views/tipes/index.html.erb:10:in `each'
    app/views/tipes/index.html.erb:10
    vendor/gems/rspec-rails-1.3.2/lib/spec/rails/extensions/action_view/base.rb:27:in
`render'
    vendor/gems/rspec-rails-1.3.2/lib/spec/rails/example/view_example_group.rb:170:in
`__send__'
    vendor/gems/rspec-rails-1.3.2/lib/spec/rails/example/view_example_group.rb:170:in
`render'
    spec/views/tipes/index.html.erb_spec.rb:30
    rspec (1.3.0) lib/spec/example/example_methods.rb:40:in `instance_eval'
    rspec (1.3.0) lib/spec/example/example_methods.rb:40:in `execute'
    /usr/local/lib/ruby/1.8/timeout.rb:53:in `timeout'
    rspec (1.3.0) lib/spec/example/example_methods.rb:37:in `execute'
    rspec (1.3.0) lib/spec/example/example_group_methods.rb:214:in
`run_examples'
    rspec (1.3.0) lib/spec/example/example_group_methods.rb:212:in `each'
    rspec (1.3.0) lib/spec/example/example_group_methods.rb:212:in
`run_examples'
    rspec (1.3.0) lib/spec/example/example_group_methods.rb:103:in `run'
    rspec (1.3.0) lib/spec/runner/example_group_runner.rb:23:in `run'
    rspec (1.3.0) lib/spec/runner/example_group_runner.rb:22:in `each'
    rspec (1.3.0) lib/spec/runner/example_group_runner.rb:22:in `run'
    rspec (1.3.0) lib/spec/runner/options.rb:152:in `run_examples'
    rspec (1.3.0) lib/spec/runner/command_line.rb:9:in `run'
    rspec (1.3.0) bin/spec:5
)

Any help v much appreciated ...

Ben


More information about the rspec-users mailing list