mockito
mockito copied to clipboard
All of Mock's fields should be final
#200 Really just inspired in me the idea that Mock should only have final fields; i.e. it should be able to satisfy the @immutable contract if needed (it should be immutable-able 😛). And looking at the existing fields, this should be possible:
-
The top-level
namedAPI sets two private fields on Mock objects:_givenNameand_givenHashCode. These two are used to overridetoString()andhashCoderespectively. However, they are not much used, and they could be declared with standardwhenstubbing, or could be specified as optional arguments to the Mock constructor. -
The Mock class allows users to override default stub behavior via the
_defaultResponsemember. This has basically only two uses today:- By default, methods called without stubs return null. This default does not really make sense in the future NNBD world.
- Users can call
throwOnMissingStubto override this null-returning behavior with throwing behavior. We have #154 open to make this the default behavior.
This behavior could 100% be overridden with an optional constructor parameter.
So all three of the non-final fields could be made final without too much ceremony; it would be a breaking change to remove the named and throwOnMissingStub APIs, but we can introduce the new APIs (constructor parameters) before bumping a major version.
CC @matanlurey @TedSander if you'd like to vote yay or nay; I'd like to implement the new constructor and mark the current APIs as deprecated, sooner rather than later, so that we can give a long time window before Mockito 5-or-so, removing them.
Seems fine to me. I don't see any obvious reason why it shouldn't be.
any updates? 2021 already...
No updates. This will likely go into Mockito's next major release.
the Workaround for my case it was only affecting the health checks in GitHub actions , so i had to skip the generated files from the dart analyzer
in analysis_options.yaml i added
analyzer:
exclude:
- test/**.mocks.dart