-
-
Save Joseworks/516db28d8e2fbfc967631bdec6d55469 to your computer and use it in GitHub Desktop.
Stubbing an ActiveRecord::Relation object
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# first we create an empty ActiveRecord::Relation object | |
relation = Model.where(attribute: value) | |
# then we make the relation stub the :[] method | |
# and return whatever values we need | |
relation.stub(:[]).and_return( Model.new({attrs: values})] ) | |
# of course, we can make this too | |
# instead of the step above | |
record = double("Model", :foo => 'bar', :bar => 'baz') | |
relation.stub(:[]).and_return([record]) | |
# last, we make our Model class stub the :where method | |
# and return the relation object we created | |
Model.stub(:where).and_return(relation) | |
# additionally we can have use case specific behavior | |
model_instance.stub(:method_or_scope_that_returns_collection) { relation } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Or do
let(:rate_agreements) { Prosopite.pause { create_list(:rate_agreement, 3) } }