Patrick Gannon
2010-Jun-25 22:02 UTC
[rspec-users] [Rails] Can''t get controller test working with RSpec 2 and edge Rails 3
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-16a5e918a06649ffac24fd5873b875daf66212ad-master/activesupport/lib/active_support/dependencies.rb:212:in
`inject''
# C:/Ruby187/bin/rake:19:in `load''
# C:/Ruby187/bin/rake:19
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
-------------- next part --------------
An HTML attachment was scrubbed...
URL:
<http://rubyforge.org/pipermail/rspec-users/attachments/20100625/770c05fd/attachment.html>
David Chelimsky
2010-Jun-26 02:21 UTC
[rspec-users] [Rails] Can''t get controller test working with RSpec 2 and edge Rails 3
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-16a5e918a06649ffac24fd5873b875daf66212ad-master/activesupport/lib/active_support/dependencies.rb:212:in `inject'' > # C:/Ruby187/bin/rake:19:in `load'' > # C:/Ruby187/bin/rake:19I''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> > 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-users at rubyforge.org > http://rubyforge.org/mailman/listinfo/rspec-users-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://rubyforge.org/pipermail/rspec-users/attachments/20100625/2a15e4a5/attachment.html>
dchelimsky at gmail.com
2010-Jun-26 05:43 UTC
[rspec-users] [Rails] Can''t get controller test working with RSpec 2 and edge Rails 3
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, > DavidFYI: 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
Ashish Kumar
2011-Mar-07 09:55 UTC
[rspec-users] [Rails] Can''t get controller test working with RSpec 2 and edge Rails 3
dchelimsky at gmail.com wrote in post #921577:> On Jun 25, 9:21?pm, David Chelimsky <dchelim... at gmail.com> wrote: >> > require ''spec_helper'' >> >> > ? ? undefined method `get'' for#<RSpec::Core::ExampleGroup::Nested_1:0xc9170d0> @__memoized={}> >> ? include RSpec::Rails::ControllerExampleGroup >> David > FYI: http://github.com/rspec/rspec-rails/issues/99Just add config.include RSpec::Rails::ControllerExampleGroup in spec_helper.rb -- Posted via http://www.ruby-forum.com/.