Skip to main content

Changelog

The breaking changes, features, bug fixes and performance improvements of each release, generated from the GitHub releases. Dependency updates and internal changes are left out.

The packages have their own changelogs: Mockolate.Migration.

Breaking changesFeaturesFixesPerformance
upcoming

Version 4 Upcoming

Preparing v4…What's new in v4
2026

Version 3

11 releases · Apr 2026 to Oct 2026

230 commits16 breaking changes17 features37 fixes14 performance improvements
Oct 9 2026
3.6.0Latest
4 commits1 feature
1 change
Features · 1
  • Add a VerifyAsync overload with a cancellation token #879
Oct 1 2026
7 commits1 fix
1 change
Fixes · 1
  • Prevent concurrent HttpContent matching from corrupting the stream position #875
Sep 16 2026
5 commits1 fix
1 change
Fixes · 1
  • Support ref structs in value positions #868
Sep 7 2026
11 commits1 feature1 fix
2 changes
Features · 1
  • Add It.Is(value).Within(tolerance) for floating point, DateTime and TimeSpan #861
Fixes · 1
  • Share interface members with the class members implementing them #854
Aug 27 2026
14 commits4 fixes
4 changes
Fixes · 4
  • Delegate wrapped calls of hidden interface members to the declaring interface #847
  • Skip constructors with inaccessible parameter types #846
  • Forward wrapped access of hidden interface members to the declaring interface #848
  • Forward wrapped access of interface members via the declaring interface #849
Jul 29 2026
3.4.03 breaking
29 commits3 breaking changes4 fixes
7 changes
Breaking changes · 3
  • Only expose property accessors the mock intercepts #829
  • Only expose indexer accessors the mock intercepts #830
  • Narrow indexer surfaces with more than four keys #832
Fixes · 4
  • Refuse to mock types with an inaccessible required member #825
  • Keep types mockable when an inaccessible member is already implemented #826
  • Keep the reachable accessor of a partly inaccessible property #828
  • Require Roslyn 5.0 instead of 5.6 for the generator and analyzers #831
Jun 21 2026
13 commits2 features1 performance improvement
3 changes
Features · 2
  • Expose hidden base-interface members via Mock.As<TBase>() #802
  • Add per-element matchers and values for params array parameters #796
Performance · 1
  • Defer eager allocations in the mock-creation path #803
May 21 2026
9 commits1 fix
1 change
Fixes · 1
  • Preserve protected internal accessibility on overridden members #788
May 11 2026
24 commits2 features5 fixes2 performance improvements
9 changes
Features · 2
  • Collect benchmark data into 'benchmarks' branch #762
  • Support out/ref/ref-readonly ref-struct parameters #774
Fixes · 5
  • Update package icon reference to use new logo #757
  • Use correct sonar organization #759
  • Casing of sonar organization #760
  • Update URLs from aweXpect to testably in documentation and code references #761
  • Restore case-insensitive URI test coverage #765
Performance · 2
  • Pre-size setup dispatch tables to FastMockInteractions member count #773
  • Fuse literal values into setup and verify paths #775
May 2 2026
17 commits4 features3 fixes4 performance improvements
11 changes
Features · 4
  • Enhance benchmark reporting by filtering out specified columns #742
  • Add baseline benchmark comparison to reporting #744
  • Implement baseline ratio computation and unit normalization in benchmark reporting #748
  • Bind Method(default, …) to the by-values overload #750
Fixes · 3
  • Also remove "Gen2" from benchmark tables #745
  • Build error #749
  • Make source generator snapshot build configuration invariant #753
Performance · 4
  • Defer per-mock allocations in ChunkedSlotStorage and MockScenarioSetup #738
  • Defer diagnostic formatting of by-value setup matchers #739
  • Optimize generator-emitted setups by skipping dual registration #741
  • Lazy-allocate per-member fast buffers on first record #740
Apr 30 2026
3.0.013 breaking
97 commits13 breaking changes7 features17 fixes7 performance improvements
44 changes
Breaking changes · 13
  • Avoid boxing for parameters #633
  • Avoid casting for properties and callbacks #634
  • Introduce ITypedParameter and ITypedMethodMatch interfaces to avoid boxing for method parameters #635
  • Introduce ITypedIndexerMatch interfaces to avoid boxing for indexer parameters #637
  • Remove index handling from IInteraction implementations to simplify interaction classes #641
  • Reduce allocations in setup/interaction/verify #642
  • Use Callbacks<T> class #648
  • Optimize indexer performance by removing capturing closures #653
  • Interfaces for ref-struct compatibility and add support #662
  • Update CreateMock overloads to accept typed constructor arguments #668
  • Omit constructor parameters overloads for interfaces and types with only parameterless constructors #671
  • Add state-passing variant of Invoke method to avoid closures #677
  • Enable subclassing by updating MockRegistry constructors and interactions #691
Features · 7
  • Add Scenarios #643
  • Allow opt-out of interaction recording #649
  • Add collection matchers for Contains and SequenceEquals #650
  • Forward events to base class when not skipped #658
  • Add support for required members in generated constructors #681
  • Enhance static interface support with additional mock capabilities #698
  • Update benchmarks to verify getter and setter calls #702
Fixes · 17
  • Missing namespace for Action in source generated code #651
  • Keep source generated classes internal #652
  • Record interactions even if base class throws #654
  • Race-condition in property initialization #660
  • Callback invocations for methods with 5+ parameters #663
  • Source generation errors #672
  • Prefix reserved C# keywords with '@' in generated members #682
  • Implement ConsumeAll method to mark all slots as verified in FastMethodBuffer #707
  • Remove spurious " in exception message #711
  • Rename verify lambda variable to avoid collision with parameter named i #718
  • Preserve ref/out/in modifiers when raising events with by-ref delegates #719
  • Skip IMockSetup<T> parent for interfaces with only static abstract events #720
  • Preserve init accessor on init-only properties #717
  • Rename methodSetup local in setup impl to avoid parameter name collision #722
  • Support ref and ref readonly return types #721
  • Preserve nullable annotation on generic return type in setup interface #723
  • Support generic methods with allows ref struct constraint #724
Performance · 7
  • Optimize storage handling in PropertySetups for improved performance #647
  • Typed indexer storage with int signature indices #657
  • Improve interaction hot-path performance #679
  • Speedup source generator #683
  • Optimize property getter access handling in FastPropertyBuffer #694
  • Improve indexer performance #699
  • Update property verification methods to use typed verification #703
2026

Version 2

8 releases · Mar 2026 to Apr 2026

91 commits4 breaking changes21 features15 fixes14 performance improvements
2026

Version 1

16 releases · Jan 2026 to Mar 2026

110 commits2 breaking changes15 features20 fixes