feat: support wrapping concrete instances#293
Conversation
There was a problem hiding this comment.
Pull request overview
This PR adds support for wrapping concrete instances with mocks, allowing users to create mock proxies around existing objects that delegate calls to the wrapped instance while still supporting setup and verification.
Key Changes:
- Added new
Mock.Wrap<T>()API methods that accept a concrete instance to wrap - Modified source generator to support wrapped instances with conditional delegation logic
- Generated mocks now check for wrapped instances and delegate calls when no setup is configured
Reviewed changes
Copilot reviewed 6 out of 6 changed files in this pull request and generated 4 comments.
Show a summary per file
| File | Description |
|---|---|
| Tests/Mockolate.Tests/MockTests.WrapTests.cs | New test file validating wrap functionality for methods, properties, indexers, and setup overrides |
| Source/Mockolate.SourceGenerators/Sources/Sources.cs | Adds Mock.Wrap<T>() public API methods and supporting infrastructure |
| Source/Mockolate.SourceGenerators/Sources/Sources.MockRegistration.cs | Implements GenerateWrapped<T>() partial method for wrapped mock generation |
| Source/Mockolate.SourceGenerators/Sources/Sources.ForMock.cs | Updates mock implementation generation to include wrapped instance field and delegation logic |
| Tests/Mockolate.SourceGenerators.Tests/Sources/ForMockTests.ImplementClassTests.cs | Updates test assertions to reflect new wrapped instance delegation patterns |
| Tests/Mockolate.SourceGenerators.Tests/GeneralTests.cs | Updates test assertions for wrapped instance support in properties and methods |
Comments suppressed due to low confidence (1)
Source/Mockolate.SourceGenerators/Sources/Sources.ForMock.cs:829
- Extra blank line inside braces. Remove the empty line after the closing brace on line 812 to maintain consistent formatting.
🚀 Benchmark ResultsDetails
|
|
|
This is addressed in release v0.43.0. |



This PR adds support for wrapping concrete instances with mocks, allowing users to create mock proxies around existing objects that delegate calls to the wrapped instance while still supporting setup and verification.
Key Changes:
Mock.Wrap<T>()API methods that accept a concrete instance to wrap