Supported features
Generation:
All supported ways of generating mocks. Handling mockable types:
- [x] generating inline mocks
- [x] generate in Mocked.generated based on AutoMockable protocol
- [x] generate in Mocked.generated based on AutoMockable annotation
- [ ] skip protocols that cannot be generated with warning
- [x] support protocol inheritance
- [x] support objc protocols (with special protocol/annotation)
- [x] support generic protocols - see Generics section for more information !!!
Stubbing:
Support for stubbing protocol members:
- [x] stubbing initializers only for protocol conformance - they have empty implementation!
- [ ] stubbing deinitializers
- [x] stubbing instance methods
- [x] with return value
- [ ] with return as Swift.Never
- [x] that throws
- [x] that rethrows
- [x] stubbing static methods
- [x] stubbing generic methods
- [x] constrained to protocol conformance
- [x] with ‘T.Type’ attributes
- [x] constrained to Self type
- [x] stubbing variables (with get, set)
- [x] instance variables
- [x] static variables
- [x] optional
- [x] implicitly unwrapped optional
- [x] stubbing subscripts - for generic subscripts manual annotation needed
- [x] handling associated types - done by annotations
- [x] handling conformances in associated types
- [x] wrapping method attributes as Parameter
- [x] basic types
- [x] closures
- [x] @escaping closures
- [x] typealiases
Given
Usage of Given to specify return value and error thrown for stubbed methods:
- [x] constraint to attributes matching
.any
- [x] constraint to attributes matching explicit
.value(ValueType)
where:- [x] ValueType is Equatable
- [x] ValueType is Sequences of Equatable elements
- [x] ValueType is not Equatable - when registered comparator in Matcher
- [x] ValueType is Equatable is
@escaping
closure - when registered comparator in Matcher - [x] !!! ValueType is not
@escaping
closure - always handled as.any
- [x] return value for instance stub
- [x] error thrown for instance stub
- [ ] error thrown for instance stubs that rethrows
- [x] return value for static stubs
- [x] error thrown for static stubs
- [ ] error thrown for static stubs, that rethrows
Perform
Usage of Perform to execute closure, when stubbed method is called:
- [x] perform closure attributes matching stub attributes
- [x] constraint to attributes matching
.any
- [x] constraint to attributes matching explicit
.value(ValueType)
where:- [x] ValueType is Equatable
- [x] ValueType is Sequences of Equatable elements
- [x] ValueType is not Equatable - when registered comparator in Matcher
- [x] ValueType is Equatable is
@escaping
closure - when registered comparator in Matcher - [x] !!! ValueType is not
@escaping
closure - always handled as.any
- [x] expect perform closure for static stubs
Verify
Usage of Verify to check, whether specific stubbed method was called on Mock
- [x] constraint to attributes matching
.any
- [x] constraint to attributes matching explicit
.value(ValueType)
where:- [x] ValueType is Equatable
- [x] ValueType is Sequences of Equatable elements
- [x] ValueType is not Equatable - when registered comparator in Matcher
- [x] ValueType is Equatable is
@escaping
closure - when registered comparator in Matcher - [x] !!! ValueType is not
@escaping
closure - always handled as.any
- [x] verify if called at least once
- [x] verify if called exactly number of times
- [x] verify for static methods