Problems with rSpec

  1. First question

I am getting this error when running my tests:

b spec/views/projects/index.rhtml_spec.rb spec/views/projects/
new.rhtml_spec.rb
/usr/local/lib/ruby/gems/1.8/gems/activesupport-1.4.2/lib/
active_support/dependencies.rb:266:in `load_missing_constant’:
uninitialized constant ProjectsHelper (NameError)

The first time I saw this I figured I would just get everything
working by commenting out the
+++
include ProjectHelper
+++
within the view tests. And that let everything run fine. Then I see
the same error again at the same file (index.rhtml.spec.rb), so I
delete the line, and everything runs fine. Then the next time I run
the tests the same error is being thrown, but is now pointing to a
different file where the line is commented out.

What is going on here? Is this a common rSpec bug?

  1. Next question.

When I run the tests I get the following error for one of the auto-
created tests, and cannot figure out why it is throwing it.

describe “/projects/new.rhtml” do
before do
@project = mock_model(Project)
@project.stub!(:new_record?).and_return(true)
assigns[:project] = @project
end

it “should render new form” do
render “/projects/new.rhtml”
# THIS IS THE LINE THE ERROR IS BEING THROWN ON
response.should have_tag(“form[action=?][method=post]”,
projects_path) do
end
end
end

Here is the error message
+++++++
ActionView::TemplateError in ‘/projects/new.rhtml should render new
form’
Mock ‘Project_1000’ received unexpected message :name with (no args)
On line #3 of app/views/projects/_form.rhtml

1: <p>
2:  <label for="project_name">Name:</label>
3:  <%= f.text_field :name %>
4: </p>
5:
6: <p>

+++++++

Here is a snippet from the _form.rhtml file

Name: <%= f.text_field :name %>

Description: <%= f.text_area :description %>

+++++++++++

After seeing this error I thought I would set the name parameter in
the mock object. After doing so the test failed again, but because
the description was not set.

  1. Yet another question

Is there some crazy bugs with the setup scripts?

I have found for the second time that the required files within the
script/ folder, as well as the spec_helper.rb and spec_opts, are never
created. Luckily for me I had one or two test projects that used on
of the older versions of rSpec so I was able to copy them over.

I can’t see something like this not being fixed, so is it just me?

  1. And finally

  • I created a simple Person model with rspec_model and a person
    controller with rspec_controller.
  • The person model was created with one field: name:string
  • There is no additional code within the person model class.

I then run the tests expecting everything to pass but I get one error
thrown saying that the person model is invalid.

+++++
ActiveRecord::StatementInvalid in ‘Person should be valid’
ActiveRecord::StatementInvalid
./spec/models/person_spec.rb:5:in `new’
./spec/models/person_spec.rb:5:
script/spec:4:

+++++
require File.dirname(FILE) + ‘/…/spec_helper’

describe Person do
before(:each) do
@person = Person.new
end

it “should be valid” do
@person.should be_valid
end
end
+++++

Any ideas?

Any help would be appreciated.

Thanks

Sorry if I am stating the obvious here, but my comments are
interleaved. Also, consider joining the rspec Google Group.

  1. First question

I am getting this error when running my tests:

b spec/views/projects/index.rhtml_spec.rb spec/views/projects/
new.rhtml_spec.rb
/usr/local/lib/ruby/gems/1.8/gems/activesupport-1.4.2/lib/
active_support/dependencies.rb:266:in `load_missing_constant’:
uninitialized constant ProjectsHelper (NameError)

Is the name ProjectHelper or ProjectsHelper?

The first time I saw this I figured I would just get everything
working by commenting out the
+++
include ProjectHelper
+++

  1. Next question.

When I run the tests I get the following error for one of the auto-
created tests, and cannot figure out why it is throwing it.

describe “/projects/new.rhtml” do
before do
@project = mock_model(Project)
@project.stub!(:new_record?).and_return(true)
@project.stub!(:name).and_return(‘bob dylan’)
end
3: <%= f.text_field :name %>

I can’t see something like this not being fixed, so is it just me?
script/generate rspec

  1. And finally

  • I created a simple Person model with rspec_model and a person
    controller with rspec_controller.
  • The person model was created with one field: name:string
  • There is no additional code within the person model class.

I then run the tests expecting everything to pass but I get one error
thrown saying that the person model is invalid.

Are you sure your test database is set up correctly?

There is another script that I have to run? :slight_smile: (Elevator music…) I
ran it and that answers the file missing question.

** For the Person validation issues, it seems the problem was that I
had my tests running from a sqlite3 database with the database set
to :memory:. After changing this to a file all the base tests now
pass.

As for the first problem listed, I typed the project controller wrong
when posting as it should be ProjectsController, but I do have the
correct version of it within the code.

$ rake spec
(in /Users/chrisolsen/Projects/Rails/Portfolio/trunk)
/usr/local/lib/ruby/gems/1.8/gems/activesupport-1.4.2/lib/
active_support/dependencies.rb:266:in load_missing_constant': uninitialized constant ProjectsHelper (NameError) from /usr/local/lib/ruby/gems/1.8/gems/activesupport-1.4.2/lib/ active_support/dependencies.rb:452:inconst_missing’

helpers/projects_helper_spec.rb

require File.dirname(FILE) + ‘/…/spec_helper’

describe ProjectsHelper do # Helper methods can be called directly in
the examples (it blocks)
end

BTW I did search for a google rspec group, but one didn’t seem to turn
up, I swear :slight_smile:

Thanks for the help

Does anyone know why I am having these class issues?