refactor!: rename It.Is with predicate to It.Satisfies#308
Conversation
Also move comparer to separate fluent callback and add it to `It.IsOneOf`
There was a problem hiding this comment.
Pull request overview
This PR refactors the parameter matching API by renaming It.Is<T>(predicate) to It.Satisfies<T>(predicate) and introduces a fluent API for custom equality comparers. The changes separate predicate-based matching from value-based equality matching, making the API more intuitive and consistent.
Key changes:
- Renamed
It.Is<T>(predicate)toIt.Satisfies<T>(predicate)for predicate-based matching - Changed
It.Is<T>(value, comparer)toIt.Is<T>(value).Using(comparer)for custom equality comparers - Added
.Using(comparer)fluent API toIt.IsOneOf<T>(...)for consistency - Updated all test files and documentation to reflect the new API
Reviewed changes
Copilot reviewed 29 out of 29 changed files in this pull request and generated no comments.
Show a summary per file
| File | Description |
|---|---|
| Tests/Mockolate.Tests/MockMethods/VerifyInvokedTests.SpanTests.cs | Updated verification calls to use It.Satisfies |
| Tests/Mockolate.Tests/MockMethods/SetupMethodTests.cs | Updated setup method to use It.Satisfies |
| Tests/Mockolate.Tests/MockMethods/SetupMethodTests.SpanTests.cs | Updated span-based setup methods to use It.Satisfies |
| Tests/Mockolate.Tests/MockMethods/SetupMethodTests.OutRefParameterTests.cs | Updated out/ref parameter test helpers to use It.Satisfies |
| Tests/Mockolate.Tests/MockMethods/SetupMethodTests.CallbackTests.cs | Updated callback test setups to use It.Satisfies |
| Tests/Mockolate.Tests/MockIndexers/VerifySetIndexerTests.cs | Updated indexer verification to use It.Satisfies |
| Tests/Mockolate.Tests/MockIndexers/VerifySetIndexerTests.SpanTests.cs | Updated span-based indexer verification to use It.Satisfies |
| Tests/Mockolate.Tests/MockIndexers/VerifyGotIndexerTests.cs | Updated indexer read verification to use It.Satisfies |
| Tests/Mockolate.Tests/MockIndexers/VerifyGotIndexerTests.SpanTests.cs | Updated span-based indexer read verification to use It.Satisfies |
| Tests/Mockolate.Tests/MockIndexers/SetupIndexerTests.SpanTests.cs | Updated span-based indexer setup to use It.Satisfies |
| Tests/Mockolate.Tests/MockIndexers/SetupIndexerTests.OnSetTests.cs | Updated indexer setter callbacks to use It.Satisfies |
| Tests/Mockolate.Tests/MockIndexers/SetupIndexerTests.OnGetTests.cs | Updated indexer getter callbacks to use It.Satisfies |
| Tests/Mockolate.Tests/MockIndexers/SetupIndexerTests.InitializeWithTests.cs | Updated indexer initialization to use It.Satisfies |
| Tests/Mockolate.Tests/MockBehaviorTests.InitializeTests.cs | Updated behavior initialization to use It.Satisfies |
| Tests/Mockolate.Tests/MatchTests.AnyParametersTests.cs | Fixed class name from ItTests to MatchTests |
| Tests/Mockolate.Tests/MatchExtensionsTests.cs | Updated parameter monitor test to use It.Satisfies |
| Tests/Mockolate.Tests/ItTests.cs | Updated core It tests to use It.Satisfies |
| Tests/Mockolate.Tests/ItTests.SatisfiesTests.cs | New test file for It.Satisfies functionality |
| Tests/Mockolate.Tests/ItTests.IsTests.cs | Removed predicate tests, updated comparer syntax to use .Using() |
| Tests/Mockolate.Tests/ItTests.IsOneOfTests.cs | Updated to use It.Satisfies where appropriate |
| Tests/Mockolate.ExampleTests/ExampleTests.cs | Updated example to use It.Satisfies |
| Tests/Mockolate.Api.Tests/Expected/Mockolate_netstandard2.0.txt | Updated API surface to reflect new signatures |
| Tests/Mockolate.Api.Tests/Expected/Mockolate_net8.0.txt | Updated API surface to reflect new signatures |
| Tests/Mockolate.Api.Tests/Expected/Mockolate_net10.0.txt | Updated API surface to reflect new signatures |
| Source/Mockolate/It.Satisfies.cs | New implementation of It.Satisfies method |
| Source/Mockolate/It.IsOneOf.cs | Added .Using() fluent API for custom comparers |
| Source/Mockolate/It.Is.cs | Removed predicate overload, changed comparer to fluent API |
| README.md | Updated documentation to reflect API changes |
| Docs/pages/02-setup.md | Updated documentation to reflect API changes |
It.Is with predicate to It.SatisfiesIt.Is with predicate to It.Satisfies
Test Results 14 files ± 0 14 suites ±0 5m 2s ⏱️ -14s Results for commit 6344cf8. ± Comparison against base commit 4e06377. This pull request removes 34 and adds 36 tests. Note that renamed tests count towards both.♻️ This comment has been updated with latest results. |
🚀 Benchmark ResultsDetails
|
|
|
This is addressed in release v0.44.0. |



This PR refactors the parameter matching API by renaming
It.Is<T>(predicate)toIt.Satisfies<T>(predicate)and introduces a fluent API for custom equality comparers. The changes separate predicate-based matching from value-based equality matching, making the API more intuitive and consistent.Key changes:
It.Is<T>(predicate)toIt.Satisfies<T>(predicate)for predicate-based matchingIt.Is<T>(value, comparer)toIt.Is<T>(value).Using(comparer)for custom equality comparers.Using(comparer)fluent API toIt.IsOneOf<T>(...)for consistency