-
Notifications
You must be signed in to change notification settings - Fork 171
Description
#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 MakethrowOnMissingStubthe default (eventually)Β #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.