Revision history for hmock
0.5.0.0 -- 2021-09-25
- HMock now depends on
Predicate
from the explainable-predicates
package.
0.4.0.0 -- 2021-08-22
- Dramatically simplified the Template Haskell API.
makeMockable
now expects a Type instead of a Name. Use [t|MyClass|]
.
- Most other variants of
makeMockable
have been removed. Use
makeMockableWithOptions
instead.
makeMockable
will now detect when instances already exist and won't
redefine them.
makeMockable [t|MyClass ConcreteType|]
now defines Mockable
and
MockableBase
for any MyClass
type. Only MockT
instances use the
concrete type. In some cases, you may need to add type annotations to your
expectations.
MockSetup
can now add expectations.
- Added a lot more configuration for severity of faults:
setAmbiguityCheck
can now set to ignore, warning, or error.
- Added
setUninterestingActionCheck
for actions with no expectations.
- Added
setUnexpectedActionCheck
for actions that don't match expectations.
- Added
setUnmetExpectationCheck
for expectations that aren't met.
- Predicates have undergone major updates.
- Predicates now show more detailed messages when they fail.
- New
keys
and values
predicates accept any child predicate.
- Removed
containsKey
, containsEntry
, keysAre
, and entriesAre
- Instead of
containsEntry
or entriesAre
, use contains
or
unorderedElemsAre
with zipP
.
- New predicates:
positive
, negative
, nonPositive
, nonNegative
.
0.3.0.0 -- 2021-06-30
- Methods with polymorphic return types can now be mocked if the return type has
a
Typeable
constraint.
- Added
whenever
to associate a side effect to a method.
- Added
WholeMethodMatcher
to match entire method args at once.
allowUnexpected
no longer changes the default for expected calls.
0.2.0.0 -- 2021-06-24
- Added ambiguity checking.
- This is an optional feature, which is off by default.
- To make it easier to avoid ambiguity, there is now an
allowUnexpected
that
- causes unexpected calls to be ignored and optionally provide a response, but
doesn't conflict with expectations that override it. Ambiuguous uses of
expectAny
can often be replaced with allowUnexpected
.
- Restricted mockable setup to defaults to avoid race conditions.
- Setup handlers now run in the
MockSetup
monad.
- Adding expectations from setup is no longer allowed. However, you can use
allowUnexpected
to allow unexpected calls.
- Added
nestMockT
and withNestedMockT
to the API.
- Exported smaller modules to make selective imports easier.
0.1.0.1 -- 2021-06-20
- Fixed a bad dependency that broke some GHC versions.
0.1.0.0 -- 2021-06-20
- First version. Released on an unsuspecting world.