Avoid mocks for partial mocking leaking into subsequent tests #331
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Previously
ObjectMethods#mocha
&ClassMethods::AnyInstance#mocha
were building mock objects for ancestor classes whenObjectReceiver#mocks
orAnyInstanceReceiver#mocks
was called fromMock#all_expectations
as part ofMock#method_missing
.Since these mock objects were not associated with a corresponding
ClassMethod
orAnyInstanceMethod
registered withCentral
viaMockery#mock_impersonating
orMockery#mock_impersonating_any_instance_of
, they were not being reset as part ofCentral#unstub_all
viaMockery#teardown
and this state was leaking into subsequent tests.You can see an example of this in #298. I've captured a more general case of this in the new acceptance test method in
StubAnyInstanceMethodDefinedOnSuperclassTest
which was failing before the fix in this commit.I've also added a similar acceptance test method to
StubClassMethodDefinedOnSuperclassTest
which was also failing before the fix in this commit.I'm not particularly happy with the fix, but I think it'll do for now.