From 768c3e78d881f580fd06cdeebc95fe9166368035 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Valentin=20Breu=C3=9F?= Date: Sat, 20 Jun 2026 11:45:17 +0200 Subject: [PATCH] coverage: cover wrapping a class without a parameterless constructor Adds a test that mocks and wraps a class whose only constructor is parameterized, confirming constructor parameters are threaded through CreateMock and Wrapping --- .../MockTests.WrappingClassTests.cs | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/Tests/Mockolate.Tests/MockTests.WrappingClassTests.cs b/Tests/Mockolate.Tests/MockTests.WrappingClassTests.cs index 9486db72..69de1c8d 100644 --- a/Tests/Mockolate.Tests/MockTests.WrappingClassTests.cs +++ b/Tests/Mockolate.Tests/MockTests.WrappingClassTests.cs @@ -7,6 +7,18 @@ public sealed partial class MockTests { public sealed class WrappingClassTests { + [Fact] + public async Task Wrap_ClassWithoutParameterlessConstructor_ShouldDelegateToWrappedInstance() + { + ServiceWithConstructor myService = new("real"); + ServiceWithConstructor wrappedService = ServiceWithConstructor.CreateMock("mock").Wrapping(myService); + + string result = wrappedService.Format("value"); + + await That(result).IsEqualTo("real:value"); + await That(wrappedService.Mock.Verify.Format("value")).Once(); + } + [Fact] public async Task Wrap_Events_ForwardEventsFromWrappedInstance() { @@ -145,6 +157,19 @@ public async Task Wrapping_ShouldIgnoreProtectedMembers() await That(myMock.Mock.Verify.MyPublicMethod()).Once(); } + internal class ServiceWithConstructor + { + private readonly string _prefix; + + public ServiceWithConstructor(string prefix) + { + _prefix = prefix; + } + + public virtual string Format(string value) + => $"{_prefix}:{value}"; + } + internal class ServiceWithProtectedMembers { public virtual int MyPropertyWithProtectedSetter { get; protected set; } = 10;