From 3ee8910378736f1af4fa2a119bee20e88aa65f98 Mon Sep 17 00:00:00 2001 From: Simon G Date: Wed, 9 Aug 2023 15:22:14 +0200 Subject: [PATCH] - replace moq with nSubstitute --- .../IocValidator.cs | 4 ++-- .../LightweightIocContainer.Validation.csproj | 2 +- .../IocValidatorTest.cs | 14 ++++++------ ....LightweightIocContainer.Validation.csproj | 2 +- .../AssemblyInstallerTest.cs | 22 +++++++++---------- .../EnumerableExtensionTest.cs | 20 ++++++++--------- .../IocContainerRecursionTest.cs | 6 ++--- .../IocContainerTest.cs | 22 +++++++++---------- Test.LightweightIocContainer/OnCreateTest.cs | 4 ++-- .../RegistrationBaseTest.cs | 10 ++++----- .../SingleTypeRegistrationTest.cs | 13 ++++++----- .../Test.LightweightIocContainer.csproj | 2 +- 12 files changed, 61 insertions(+), 60 deletions(-) diff --git a/LightweightIocContainer.Validation/IocValidator.cs b/LightweightIocContainer.Validation/IocValidator.cs index 8e9c5a9..d408e2a 100644 --- a/LightweightIocContainer.Validation/IocValidator.cs +++ b/LightweightIocContainer.Validation/IocValidator.cs @@ -4,7 +4,7 @@ using LightweightIocContainer.Interfaces.Registrations; using LightweightIocContainer.Interfaces.Registrations.Fluent; -using Moq; +using NSubstitute; namespace LightweightIocContainer.Validation; @@ -79,7 +79,7 @@ public class IocValidator validationExceptions.Add(exception); } - private T GetMock() where T : class => new Mock().Object; + private T GetMock() where T : class => Substitute.For(); private object? GetMockOrDefault(Type type) { if (type.IsValueType) diff --git a/LightweightIocContainer.Validation/LightweightIocContainer.Validation.csproj b/LightweightIocContainer.Validation/LightweightIocContainer.Validation.csproj index 791604a..1384594 100644 --- a/LightweightIocContainer.Validation/LightweightIocContainer.Validation.csproj +++ b/LightweightIocContainer.Validation/LightweightIocContainer.Validation.csproj @@ -27,7 +27,7 @@ all runtime; build; native; contentfiles; analyzers; buildtransitive - + diff --git a/Test.LightweightIocContainer.Validation/IocValidatorTest.cs b/Test.LightweightIocContainer.Validation/IocValidatorTest.cs index 3a7c091..f4e8b4d 100644 --- a/Test.LightweightIocContainer.Validation/IocValidatorTest.cs +++ b/Test.LightweightIocContainer.Validation/IocValidatorTest.cs @@ -8,7 +8,7 @@ using LightweightIocContainer.Exceptions; using LightweightIocContainer.Interfaces.Installers; using LightweightIocContainer.Interfaces.Registrations; using LightweightIocContainer.Validation; -using Moq; +using NSubstitute; using NUnit.Framework; namespace Test.LightweightIocContainer.Validation; @@ -152,14 +152,14 @@ public class IocValidatorTest IocValidator validator = new(iocContainer); - Mock parameterMock = new(); - parameterMock.Setup(p => p.Method()).Returns(true); + IParameter parameterMock = Substitute.For(); + parameterMock.Method().Returns(true); - validator.AddParameter(parameterMock.Object); + validator.AddParameter(parameterMock); validator.Validate(); - parameterMock.Verify(p => p.Method(), Times.Never); + parameterMock.DidNotReceive().Method(); } [Test] @@ -181,8 +181,8 @@ public class IocValidatorTest IocValidator validator = new(iocContainer); - Mock parameterMock = new(); - validator.AddParameter(parameterMock.Object); + IParameter parameterMock = Substitute.For(); + validator.AddParameter(parameterMock); AggregateException aggregateException = Assert.Throws(() => validator.Validate()); diff --git a/Test.LightweightIocContainer.Validation/Test.LightweightIocContainer.Validation.csproj b/Test.LightweightIocContainer.Validation/Test.LightweightIocContainer.Validation.csproj index 558913c..89eddb5 100644 --- a/Test.LightweightIocContainer.Validation/Test.LightweightIocContainer.Validation.csproj +++ b/Test.LightweightIocContainer.Validation/Test.LightweightIocContainer.Validation.csproj @@ -11,7 +11,7 @@ - + all diff --git a/Test.LightweightIocContainer/AssemblyInstallerTest.cs b/Test.LightweightIocContainer/AssemblyInstallerTest.cs index 6e0370e..2726cfa 100644 --- a/Test.LightweightIocContainer/AssemblyInstallerTest.cs +++ b/Test.LightweightIocContainer/AssemblyInstallerTest.cs @@ -9,7 +9,7 @@ using LightweightIocContainer.Installers; using LightweightIocContainer.Interfaces; using LightweightIocContainer.Interfaces.Installers; using LightweightIocContainer.Interfaces.Registrations; -using Moq; +using NSubstitute; using NUnit.Framework; namespace Test.LightweightIocContainer; @@ -20,7 +20,7 @@ public class AssemblyInstallerTest [UsedImplicitly] public class TestInstaller : IIocInstaller { - public void Install(IRegistrationCollector registration) => registration.Add>(); + public void Install(IRegistrationCollector registration) => registration.Add(); } [UsedImplicitly] @@ -39,15 +39,15 @@ public class AssemblyInstallerTest typeof(TestInstaller) }; - Mock assemblyMock = new(); - assemblyMock.Setup(a => a.GetTypes()).Returns(types.ToArray); + AssemblyWrapper assemblyMock = Substitute.For(); + assemblyMock.GetTypes().Returns(types.ToArray()); - Mock registrationCollectorMock = new(); + IRegistrationCollector registrationCollectorMock = Substitute.For(); - AssemblyInstaller assemblyInstaller = new(assemblyMock.Object); - assemblyInstaller.Install(registrationCollectorMock.Object); + AssemblyInstaller assemblyInstaller = new(assemblyMock); + assemblyInstaller.Install(registrationCollectorMock); - registrationCollectorMock.Verify(r => r.Add>>(It.IsAny()), Times.Once); + registrationCollectorMock.Received(1).Add(Arg.Any()); } [Test] @@ -66,10 +66,10 @@ public class AssemblyInstallerTest typeof(TestInstaller) }; - Mock assemblyMock = new(); - assemblyMock.Setup(a => a.GetTypes()).Returns(types.ToArray); + AssemblyWrapper assemblyMock = Substitute.For(); + assemblyMock.GetTypes().Returns(types.ToArray()); IIocContainer iocContainer = new IocContainer(); - iocContainer.Install(FromAssembly.Instance(assemblyMock.Object)); + iocContainer.Install(FromAssembly.Instance(assemblyMock)); } } \ No newline at end of file diff --git a/Test.LightweightIocContainer/EnumerableExtensionTest.cs b/Test.LightweightIocContainer/EnumerableExtensionTest.cs index e3a4e87..6bcaafc 100644 --- a/Test.LightweightIocContainer/EnumerableExtensionTest.cs +++ b/Test.LightweightIocContainer/EnumerableExtensionTest.cs @@ -5,7 +5,7 @@ using System.Diagnostics.CodeAnalysis; using JetBrains.Annotations; using LightweightIocContainer; -using Moq; +using NSubstitute; using NUnit.Framework; namespace Test.LightweightIocContainer; @@ -83,18 +83,18 @@ public class EnumerableExtensionTest [Test] public void TestForEach() { - Mock test1 = new(); - Mock test2 = new(); - Mock test3 = new(); - Mock test4 = new(); + ITest test1 = Substitute.For(); + ITest test2 = Substitute.For(); + ITest test3 = Substitute.For(); + ITest test4 = Substitute.For(); - IEnumerable enumerable = new[] { test1.Object, test2.Object, test3.Object, test4.Object }; + IEnumerable enumerable = new[] { test1, test2, test3, test4 }; enumerable.ForEach(t => t.DoSomething()); - test1.Verify(t => t.DoSomething(), Times.Once); - test2.Verify(t => t.DoSomething(), Times.Once); - test3.Verify(t => t.DoSomething(), Times.Once); - test4.Verify(t => t.DoSomething(), Times.Once); + test1.Received(1).DoSomething(); + test2.Received(1).DoSomething(); + test3.Received(1).DoSomething(); + test4.Received(1).DoSomething(); } } \ No newline at end of file diff --git a/Test.LightweightIocContainer/IocContainerRecursionTest.cs b/Test.LightweightIocContainer/IocContainerRecursionTest.cs index 77fca7d..d034bee 100644 --- a/Test.LightweightIocContainer/IocContainerRecursionTest.cs +++ b/Test.LightweightIocContainer/IocContainerRecursionTest.cs @@ -5,7 +5,7 @@ using JetBrains.Annotations; using LightweightIocContainer; using LightweightIocContainer.Exceptions; -using Moq; +using NSubstitute; using NUnit.Framework; namespace Test.LightweightIocContainer; @@ -148,8 +148,8 @@ public class IocContainerRecursionTest _iocContainer.Register(r => r.Add()); _iocContainer.Register(r => r.Add()); - Assert.DoesNotThrow(() => _iocContainer.Resolve(new Mock().Object)); - Assert.DoesNotThrow(() => _iocContainer.Resolve(new Mock().Object)); + Assert.DoesNotThrow(() => _iocContainer.Resolve(Substitute.For())); + Assert.DoesNotThrow(() => _iocContainer.Resolve(Substitute.For())); } [Test] diff --git a/Test.LightweightIocContainer/IocContainerTest.cs b/Test.LightweightIocContainer/IocContainerTest.cs index b65a67d..ebc4a0a 100644 --- a/Test.LightweightIocContainer/IocContainerTest.cs +++ b/Test.LightweightIocContainer/IocContainerTest.cs @@ -4,7 +4,7 @@ using LightweightIocContainer.Exceptions; using LightweightIocContainer.Interfaces; using LightweightIocContainer.Interfaces.Installers; using LightweightIocContainer.Interfaces.Registrations; -using Moq; +using NSubstitute; using NUnit.Framework; namespace Test.LightweightIocContainer; @@ -119,10 +119,10 @@ public class IocContainerTest [Test] public void TestInstall() { - Mock installerMock = new(); - IIocContainer returnedContainer = _iocContainer.Install(installerMock.Object); + IIocInstaller installerMock = Substitute.For(); + IIocContainer returnedContainer = _iocContainer.Install(installerMock); - installerMock.Verify(m => m.Install(It.IsAny()), Times.Once); + installerMock.Received(1).Install(Arg.Any()); Assert.AreEqual(_iocContainer, returnedContainer); } @@ -130,15 +130,15 @@ public class IocContainerTest [Test] public void TestInstallMultiple() { - Mock installer1Mock = new(); - Mock installer2Mock = new(); - Mock installer3Mock = new(); + IIocInstaller installer1Mock = Substitute.For(); + IIocInstaller installer2Mock = Substitute.For(); + IIocInstaller installer3Mock = Substitute.For(); - IIocContainer returnedContainer = _iocContainer.Install(installer1Mock.Object, installer2Mock.Object, installer3Mock.Object); + IIocContainer returnedContainer = _iocContainer.Install(installer1Mock, installer2Mock, installer3Mock); - installer1Mock.Verify(m => m.Install(It.IsAny()), Times.Once); - installer2Mock.Verify(m => m.Install(It.IsAny()), Times.Once); - installer3Mock.Verify(m => m.Install(It.IsAny()), Times.Once); + installer1Mock.Received(1).Install(Arg.Any()); + installer2Mock.Received(1).Install(Arg.Any()); + installer3Mock.Received(1).Install(Arg.Any()); Assert.AreEqual(_iocContainer, returnedContainer); } diff --git a/Test.LightweightIocContainer/OnCreateTest.cs b/Test.LightweightIocContainer/OnCreateTest.cs index b16d80c..144b4a3 100644 --- a/Test.LightweightIocContainer/OnCreateTest.cs +++ b/Test.LightweightIocContainer/OnCreateTest.cs @@ -5,7 +5,7 @@ using LightweightIocContainer; using LightweightIocContainer.Interfaces.Registrations; using LightweightIocContainer.Registrations; -using Moq; +using NSubstitute; using NUnit.Framework; namespace Test.LightweightIocContainer; @@ -27,7 +27,7 @@ public class OnCreateTest [Test] public void TestOnCreate() { - RegistrationFactory registrationFactory = new(new Mock().Object); + RegistrationFactory registrationFactory = new(Substitute.For()); ITypedRegistration testRegistration = registrationFactory.Register(Lifestyle.Transient).OnCreate(t => t.DoSomething()); Test test = new(); diff --git a/Test.LightweightIocContainer/RegistrationBaseTest.cs b/Test.LightweightIocContainer/RegistrationBaseTest.cs index 8027334..ce587ce 100644 --- a/Test.LightweightIocContainer/RegistrationBaseTest.cs +++ b/Test.LightweightIocContainer/RegistrationBaseTest.cs @@ -7,7 +7,7 @@ using LightweightIocContainer; using LightweightIocContainer.Exceptions; using LightweightIocContainer.Registrations; using LightweightIocContainer.ResolvePlaceholders; -using Moq; +using NSubstitute; using NUnit.Framework; namespace Test.LightweightIocContainer; @@ -53,7 +53,7 @@ public class RegistrationBaseTest [Test] public void TestWithParameters() { - RegistrationFactory registrationFactory = new(new Mock().Object); + RegistrationFactory registrationFactory = new(Substitute.For()); IBar bar = new Bar(); ITest test = new Test(); @@ -67,7 +67,7 @@ public class RegistrationBaseTest [Test] public void TestWithParametersDifferentOrder() { - RegistrationFactory registrationFactory = new(new Mock().Object); + RegistrationFactory registrationFactory = new(Substitute.For()); IBar bar = new Bar(); ITest test = new Test(); @@ -83,7 +83,7 @@ public class RegistrationBaseTest [Test] public void TestWithParametersCalledTwice() { - RegistrationFactory registrationFactory = new(new Mock().Object); + RegistrationFactory registrationFactory = new(Substitute.For()); Assert.Throws(() => registrationFactory.Register(Lifestyle.Transient).WithParameters(new Bar()).WithParameters(new Test())); Assert.Throws(() => registrationFactory.Register(Lifestyle.Transient).WithParameters((0, new Bar())).WithParameters((1, new Test()))); } @@ -91,7 +91,7 @@ public class RegistrationBaseTest [Test] public void TestWithParametersNoParametersGiven() { - RegistrationFactory registrationFactory = new(new Mock().Object); + RegistrationFactory registrationFactory = new(Substitute.For()); Assert.Throws(() => registrationFactory.Register(Lifestyle.Transient).WithParameters((object[])null)); Assert.Throws(() => registrationFactory.Register(Lifestyle.Transient).WithParameters(((int index, object parameter)[])null)); } diff --git a/Test.LightweightIocContainer/SingleTypeRegistrationTest.cs b/Test.LightweightIocContainer/SingleTypeRegistrationTest.cs index a57a163..7f2beff 100644 --- a/Test.LightweightIocContainer/SingleTypeRegistrationTest.cs +++ b/Test.LightweightIocContainer/SingleTypeRegistrationTest.cs @@ -6,7 +6,7 @@ using JetBrains.Annotations; using LightweightIocContainer; using LightweightIocContainer.Interfaces.Registrations; using LightweightIocContainer.Registrations; -using Moq; +using NSubstitute; using NUnit.Framework; namespace Test.LightweightIocContainer; @@ -20,7 +20,8 @@ public class SingleTypeRegistrationTest IBar Bar { get; } } - private interface IBar + [UsedImplicitly] + public interface IBar { } @@ -44,13 +45,13 @@ public class SingleTypeRegistrationTest { IBar bar = new Bar(); - Mock iocContainerMock = new(); - iocContainerMock.Setup(c => c.Resolve()).Returns(bar); + IocContainer iocContainerMock = Substitute.For(); + iocContainerMock.Resolve().Returns(bar); - RegistrationFactory registrationFactory = new(iocContainerMock.Object); + RegistrationFactory registrationFactory = new(iocContainerMock); ISingleTypeRegistration registration = registrationFactory.Register(Lifestyle.Transient).WithFactoryMethod(c => new Foo(c.Resolve())); - IFoo foo = registration.FactoryMethod!(iocContainerMock.Object); + IFoo foo = registration.FactoryMethod!(iocContainerMock); Assert.AreEqual(bar, foo.Bar); } diff --git a/Test.LightweightIocContainer/Test.LightweightIocContainer.csproj b/Test.LightweightIocContainer/Test.LightweightIocContainer.csproj index 1744352..ba584bd 100644 --- a/Test.LightweightIocContainer/Test.LightweightIocContainer.csproj +++ b/Test.LightweightIocContainer/Test.LightweightIocContainer.csproj @@ -11,7 +11,7 @@ - + all