Date: 2008-10-26 19:09 Opener: James Mead
Bill Kocik reports:-
def do_something
@something = Something.find(:first)
@something.do_whatever
render :json => @something.to_json
end
A test might be this:
context "when do_something is called" do
setup do
@something = Something.new()
Something.expects(:find).returns(@something)
@something.stubs(:do_whatever)
get :do_something
end
should_respond_with :success
end
Because I stubbed a method on my @something object (and this
also happens with expects()), I get this:
1) Error:
test: when do_something is called should respond with success. (SomethingControllerTest):
ActiveSupport::JSON::CircularReferenceError: object references itself
If I print out the object @something, I see that it contains an
@mocha attribute that references the containing object, which is
the cause of to_json's heartburn and the error. But that @mocha
attribute is not present if I never call stubs() or expects() on
the object that's going to be converted to JSON, and I do not get
the error in that case. Can anyone show me what I'm doing wrong, or
is this actually a known issue?
James Mead comments:-
It sounds like this is a bug and will be an issue with any
object on which #stubs or #expects has been called. Depending on
how #to_json is implemented it ought to be possible to fix it.