[rspec-users] [Rails] Can't get controller test working with RSpec 2 and edge Rails 3

dchelimsky at gmail.com dchelimsky at gmail.com
Sat Jun 26 01:43:25 EDT 2010



On Jun 25, 9:21 pm, David Chelimsky <dchelim... at gmail.com> wrote:
> On Jun 25, 2010, at 5:02 PM, Patrick Gannon wrote:
>
>
>
>
>
> > Not sure if this is a Rails 3 issue or an RSpec 2 issue, but I can't seem to get a standard controller test working - it seems that the 'get' method can't be found.
>
> > I have a controller test that looks like this (named "discrepancies_controller_spec.rb" in spec/controllers directory):
>
> > require 'spec_helper'
>
> > describe DiscrepanciesController do
> >   before :each do
> >     Discrepancy.delete_all
> >   end
>
> >   it "resolves a discrepancy" do
> >    discrepancy = Discrepancy.create(:my_number=>"12345", :status=>"Open")
>
> >    get :resolve, :id => discrepancy.id
>
> >    retrieved_discrepancy = Discrepancy.find_by_my_number("12345")
> >    retrieved_discrepancy.status.should == "Resolved"
> >   end
> > end
>
> > (Yes, I'm aware of the security implications of modifying data with an HTTP/GET - that's a separate issue...)
> > When I run it with rake, I get the following error:
>
> > 1) DiscrepanciesController resolves a discrepancy
> >     Failure/Error: Unable to find C to read failed line
> >     undefined method `get' for #<RSpec::Core::ExampleGroup::Nested_1:0xc9170d0 @__memoized={}>
> >     # ./spec/controllers/discrepancies_controller_spec.rb:38 (ignore the line number, commented out code was removed from the sample)
> >     # C:/Users/Patrick_Gannon/.bundle/ruby/1.8/bundler/gems/rails-16a5e918a06649f fac24fd5873b875daf66212ad-master/activesupport/lib/active_support/dependenc ies.rb:212:in `inject'
> >     # C:/Ruby187/bin/rake:19:in `load'
> >     # C:/Ruby187/bin/rake:19
>
> I'm surprised this is the first time this has come up with rspec-2, but here we are :)
>
> This is a path-separator bug that I'll resolve in the next release. For now, you can do this in your controller specs:
>
> describe DiscrepanciesController do
>   include RSpec::Rails::ControllerExampleGroup
>
> That should work fine.
>
> If you want to do a more global workaround, add this to your spec_helper config:
>
> RSpec.configure do |c|
>   c.include RSpec::Rails::ControllerExampleGroup, :example_group => { :file_path => /\bspec[\\\/]controllers[\\\/]/ }
> end
>
> HTH,
> David

FYI: http://github.com/rspec/rspec-rails/issues/99


>
>
>
>
>
> > I can manage to test the controller action by instantiating the controller myself and calling the controller action directly, and it works, but its ugly because I have to mock out things like 'respond_to' and 'params'.
>
> > Other pertinent information: I am running Windows 7 32-bit, Ruby 1.8.7 (2010-01-10 patchlevel 249) [i386-wingw32], edge Rails 3 and MongoDB/MongoMapper.  Here is my list of installed gems (via 'bundle gem' - all my installed gems were installed by Bundler)
>
> >   * abstract (1.0.0)
> >   * actionmailer (3.0.0.beta4)
> >   * actionpack (3.0.0.beta4)
> >   * activemodel (3.0.0.beta4)
> >   * activerecord (3.0.0.beta4)
> >   * activeresource (3.0.0.beta4)
> >   * activesupport (3.0.0.beta4)
> >   * arel (0.4.0)
> >   * bcrypt-ruby (2.1.2)
> >   * bson (1.0.3)
> >   * bson_ext (1.0.1)
> >   * builder (2.1.2)
> >   * bundler (0.9.26)
> >   * capistrano (2.5.19)
> >   * capybara (0.3.8 a94f99)
> >   * cucumber (0.8.3)
> >   * cucumber-rails (0.3.2 master-b75110)
> >   * culerity (0.2.10)
> >   * database_cleaner (0.5.2 7ea99d)
> >   * devise (1.1.rc1 88ab2f)
> >   * diff-lcs (1.1.2)
> >   * erubis (2.6.5)
> >   * factory_girl (1.3.0)
> >   * factory_girl_rails (1.0)
> >   * faker (0.3.1)
> >   * ffi (0.6.3)
> >   * gherkin (2.0.2)
> >   * highline (1.5.2)
> >   * i18n (0.4.1)
> >   * jnunemaker-validatable (1.8.4)
> >   * joint (0.3.2 11a094)
> >   * json_pure (1.4.3)
> >   * mail (2.2.5)
> >   * mime-types (1.16)
> >   * mongo (1.0.3)
> >   * mongo_mapper (0.8.2)
> >   * net-scp (1.0.2)
> >   * net-sftp (2.0.4)
> >   * net-ssh (2.0.23)
> >   * net-ssh-gateway (1.0.1)
> >   * nokogiri (1.4.2.1)
> >   * plucky (0.3.2)
> >   * polyglot (0.3.1)
> >   * rack (1.1.0)
> >   * rack-mount (0.6.6)
> >   * rack-test (0.5.4)
> >   * rails (3.0.0.beta4 6682cc)
> >   * railties (3.0.0.beta4)
> >   * rake (0.8.7)
> >   * rspec (2.0.0.beta.13)
> >   * rspec-core (2.0.0.beta.13)
> >   * rspec-expectations (2.0.0.beta.13)
> >   * rspec-mocks (2.0.0.beta.13)
> >   * rspec-rails (2.0.0.beta.13)
> >   * selenium-webdriver (0.0.24)
> >   * term-ansicolor (1.0.5)
> >   * thor (0.13.6)
> >   * treetop (1.4.8)
> >   * trollop (1.16.2)
> >   * tzinfo (0.3.22)
> >   * wand (0.2.1)
> >   * warden (0.10.7)
> >   * webrat (0.7.1)
>
> > I also added a puts statement in the test to show what methods are available in the test fixture, and "get" is not in the list.  Here is what is in the list:
>
> > "__memoized", "__should_for_example_group__", "__should_not_for_example_group__", "_fixture_class_names", "_fixture_path", "_fixture_table_names", "_pre_loaded_fixtures", "_setup_mocks", "_teardown_mocks", "_use_instantiated_fixtures", "_use_transactional_fixtures", "_verify_mocks", "a_kind_of", "allow_message_expectations_on_nil", "an_instance_of", "any_args", "anything", "assert", "assert_block", "assert_equal", "assert_in_delta", "assert_instance_of", "assert_kind_of", "assert_match", "assert_nil", "assert_no_match", "assert_not_equal", "assert_not_nil",
> > "assert_not_same", "assert_nothing_raised", "assert_nothing_thrown", "assert_operator", "assert_raise", "assert_raises", "assert_respond_to", "assert_same", "assert_send", "assert_throws", "be", "be_a", "be_a_kind_of", "be_a_new", "be_an", "be_an_instance_of", "be_close", "be_false", "be_instance_of", "be_kind_of", "be_nil", "be_true", "boolean", "build_message", "change", "described_class", "double", "duck_type", "eq", "eql", "equal", "example", "example=", "exist", "expect", "fixture_class_names", "fixture_class_names?", "fixture_path", "fixture_path?", "fixture_table_names",
> > "fixture_table_names?", "flunk", "hash_including", "hash_not_including", "have", "have_at_least", "have_at_most", "have_exactly", "include", "instance_of", "kind_of", "match", "method_missing", "method_name", "mock", "mock_discrepancy", "mock_model", "no_args", "pending", "pre_loaded_fixtures", "pre_loaded_fixtures?", "raise_error", "respond_to", "run_in_transaction?", "running_example", "satisfy", "setup_fixtures", "stub_model", "subject", "teardown_fixtures", "throw_symbol", "use_instantiated_fixtures", "use_instantiated_fixtures?", "use_transactional_fixtures", "use_transactional_fixtures?"
>
> > Thanks in advance for any help you can provide - sorry for the long email (didn't want to exclude anything...)
>
> > Pat
> > _______________________________________________
> > rspec-users mailing list
> > rspec-us... at rubyforge.org
> >http://rubyforge.org/mailman/listinfo/rspec-users
>
> _______________________________________________
> rspec-users mailing list
> rspec-us... at rubyforge.orghttp://rubyforge.org/mailman/listinfo/rspec-users


More information about the rspec-users mailing list