Skip to content

All of Mock's fields should be final #201

Open
@srawlins

Description

@srawlins

#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:

  1. The top-level named API sets two private fields on Mock objects: _givenName and _givenHashCode. These two are used to override toString() and hashCode respectively. However, they are not much used, and they could be declared with standard when stubbing, or could be specified as optional arguments to the Mock constructor.

  2. The Mock class allows users to override default stub behavior via the _defaultResponse member. 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 throwOnMissingStub to override this null-returning behavior with throwing behavior. We have Make throwOnMissingStub the 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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    P2A bug or feature request we're likely to work onS2type-enhancementA request for a change that isn't a bug

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions