Looking at your stack trace, it looks like the bit of code that's triggering ActiveRecord to try to load the schema is a `create_or_update` call at ./lib/hc/qb/create_or_update_invoice.rb:17. Are you sure the RSpec stubbing line is what's causing the error? The stack trace makes it look like it's not.
HTH, Myron On Tue, Feb 2, 2016 at 12:40 PM, Adam Perry-Pelletier <[email protected] > wrote: > Myron, > > Thanks for the help, but the same thing still occurs. I had tried expect > syntax and just retried. > > expect(User).to receive(:find_by_user_id_and_type).with(42, > 'GREAT_USER').and_return(user) > > As before, the result is. > > ActiveRecord::StatementInvalid: Could not find table 'users' > /Users/mp/.rvm/gems/ruby-2.1.2_hc-2.1.2/gems/activerecord-3.2.21/lib/active_record/connection_adapters/sqlite_adapter.rb:472:in > `table_structure' > /Users/mp/.rvm/gems/ruby-2.1.2_hc-2.1.2/gems/activerecord-3.2.21/lib/active_record/connection_adapters/sqlite_adapter.rb:346:in > `columns' > /Users/mp/.rvm/gems/ruby-2.1.2_hc-2.1.2/gems/activerecord-3.2.21/lib/active_record/connection_adapters/schema_cache.rb:12:in > `block in initialize' > /Users/mp/.rvm/gems/ruby-2.1.2_hc-2.1.2/gems/activerecord-3.2.21/lib/active_record/model_schema.rb:229:in > `yield' > /Users/mp/.rvm/gems/ruby-2.1.2_hc-2.1.2/gems/activerecord-3.2.21/lib/active_record/model_schema.rb:229:in > `columns' > /Users/mp/.rvm/gems/ruby-2.1.2_hc-2.1.2/gems/activerecord-3.2.21/lib/active_record/model_schema.rb:249:in > `column_names' > /Users/mp/.rvm/gems/ruby-2.1.2_hc-2.1.2/gems/activerecord-3.2.21/lib/active_record/model_schema.rb:262:in > `column_methods_hash' > /Users/mp/.rvm/gems/ruby-2.1.2_hc-2.1.2/gems/activerecord-3.2.21/lib/active_record/dynamic_matchers.rb:74:in > `all_attributes_exists?' > /Users/mp/.rvm/gems/ruby-2.1.2_hc-2.1.2/gems/activerecord-3.2.21/lib/active_record/dynamic_matchers.rb:27:in > `method_missing' > ./lib/hc/qb/create_or_update_invoice.rb:17:in `create_or_update' > ./spec/create_or_update_invoice_spec.rb:233:in `block (4 levels) in <top > (required)>' > -e:1:in `load' > -e:1:in `<main>' > > Unlike 1.x, if 3.4 even touches an ActiveRecord class it tries to load it > from the schema, before it is actually used. > > Thanks, > Adam > > On Tuesday, February 2, 2016 at 11:46:49 AM UTC-8, Myron Marston wrote: >> >> In rspec 3.2, we changed to >>> allow(User).to receive(:find_by_user_id_and_type).with(42, >>> 'GREAT_USER').and_return(user) >> >> >> This is not equivalent to what you had before. The equivalent of >> `User.should_receive` in the new syntax is `expect(User).to receive`. >> `allow` is the equivalent of a stub. >> >> As for the error you're getting: I believe it is related to verifying >> doubles. It is trying to validate that `find_by_user_id_and_type` is a >> valid method -- but to verify that, the schema must be loaded to see if the >> model has `user_id` and `type` fields. If you don't want partial doubles >> to have that kind of verification, you can turn it off with a config option: >> >> >> https://www.relishapp.com/rspec/rspec-mocks/docs/verifying-doubles/partial-doubles >> >> HTH, >> Myron >> >> On Tue, Feb 2, 2016 at 11:38 AM, Adam Perry-Pelletier < >> [email protected]> wrote: >> >>> In old RSpec, in a Rails Mountable Engine project with no database >>> underneath. We have the following expectation set up. >>> >>> User.should_receive(:find_by_user_id_and_type).with(42, >>> 'GREAT_USER').and_return(user) >>> >>> The above worked fine. >>> >>> In rspec 3.2, we changed to >>> >>> allow(User).to receive(:find_by_user_id_and_type).with(42, >>> 'GREAT_USER').and_return(user) >>> >>> This now fails with the error: >>> >>> ActiveRecord::StatementInvalid: Could not find table 'users' >>> >>> It appears in rspec 3.4 when the expectation is set up, rspec does try >>> to load the ActiveRecord properties from the database. The old rspec did >>> not do this. This allowed us to write rspec tests against a Rails Mountable >>> Engine project without actually having to load and configure a test >>> database. The database for this project is loaded and available in the main >>> project which uses this subproject. >>> >>> Thanks in advance for any help. >>> Adam >>> >>> >>> -- >>> You received this message because you are subscribed to the Google >>> Groups "rspec" group. >>> To unsubscribe from this group and stop receiving emails from it, send >>> an email to [email protected]. >>> To post to this group, send email to [email protected]. >>> To view this discussion on the web visit >>> https://groups.google.com/d/msgid/rspec/68e6bdcf-a228-45c4-bcd8-c12b1e31af1e%40googlegroups.com >>> <https://groups.google.com/d/msgid/rspec/68e6bdcf-a228-45c4-bcd8-c12b1e31af1e%40googlegroups.com?utm_medium=email&utm_source=footer> >>> . >>> For more options, visit https://groups.google.com/d/optout. >>> >> >> -- > You received this message because you are subscribed to the Google Groups > "rspec" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To post to this group, send email to [email protected]. > To view this discussion on the web visit > https://groups.google.com/d/msgid/rspec/00854e19-2580-4567-96fe-1793e6751f4f%40googlegroups.com > <https://groups.google.com/d/msgid/rspec/00854e19-2580-4567-96fe-1793e6751f4f%40googlegroups.com?utm_medium=email&utm_source=footer> > . > > For more options, visit https://groups.google.com/d/optout. > -- You received this message because you are subscribed to the Google Groups "rspec" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/rspec/CADUxQmvWXrTHxY2wghy6RRkRV-YejCRybsTYRb78pRPneR7h4Q%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.
