- replace moq with nSubstitute

ImplementExpressionTrees
Simon G 2 years ago
parent 123c4d1b06
commit 3ee8910378
  1. 4
      LightweightIocContainer.Validation/IocValidator.cs
  2. 2
      LightweightIocContainer.Validation/LightweightIocContainer.Validation.csproj
  3. 14
      Test.LightweightIocContainer.Validation/IocValidatorTest.cs
  4. 2
      Test.LightweightIocContainer.Validation/Test.LightweightIocContainer.Validation.csproj
  5. 22
      Test.LightweightIocContainer/AssemblyInstallerTest.cs
  6. 20
      Test.LightweightIocContainer/EnumerableExtensionTest.cs
  7. 6
      Test.LightweightIocContainer/IocContainerRecursionTest.cs
  8. 22
      Test.LightweightIocContainer/IocContainerTest.cs
  9. 4
      Test.LightweightIocContainer/OnCreateTest.cs
  10. 10
      Test.LightweightIocContainer/RegistrationBaseTest.cs
  11. 13
      Test.LightweightIocContainer/SingleTypeRegistrationTest.cs
  12. 2
      Test.LightweightIocContainer/Test.LightweightIocContainer.csproj

@ -4,7 +4,7 @@
using LightweightIocContainer.Interfaces.Registrations; using LightweightIocContainer.Interfaces.Registrations;
using LightweightIocContainer.Interfaces.Registrations.Fluent; using LightweightIocContainer.Interfaces.Registrations.Fluent;
using Moq; using NSubstitute;
namespace LightweightIocContainer.Validation; namespace LightweightIocContainer.Validation;
@ -79,7 +79,7 @@ public class IocValidator
validationExceptions.Add(exception); validationExceptions.Add(exception);
} }
private T GetMock<T>() where T : class => new Mock<T>().Object; private T GetMock<T>() where T : class => Substitute.For<T>();
private object? GetMockOrDefault(Type type) private object? GetMockOrDefault(Type type)
{ {
if (type.IsValueType) if (type.IsValueType)

@ -27,7 +27,7 @@
<PrivateAssets>all</PrivateAssets> <PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets> <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference> </PackageReference>
<PackageReference Include="Moq" Version="4.18.2" /> <PackageReference Include="NSubstitute" Version="5.0.0" />
<PackageReference Include="System.Reflection.Emit" Version="4.7.0" /> <PackageReference Include="System.Reflection.Emit" Version="4.7.0" />
</ItemGroup> </ItemGroup>

@ -8,7 +8,7 @@ using LightweightIocContainer.Exceptions;
using LightweightIocContainer.Interfaces.Installers; using LightweightIocContainer.Interfaces.Installers;
using LightweightIocContainer.Interfaces.Registrations; using LightweightIocContainer.Interfaces.Registrations;
using LightweightIocContainer.Validation; using LightweightIocContainer.Validation;
using Moq; using NSubstitute;
using NUnit.Framework; using NUnit.Framework;
namespace Test.LightweightIocContainer.Validation; namespace Test.LightweightIocContainer.Validation;
@ -152,14 +152,14 @@ public class IocValidatorTest
IocValidator validator = new(iocContainer); IocValidator validator = new(iocContainer);
Mock<IParameter> parameterMock = new(); IParameter parameterMock = Substitute.For<IParameter>();
parameterMock.Setup(p => p.Method()).Returns(true); parameterMock.Method().Returns(true);
validator.AddParameter<ITest, IParameter>(parameterMock.Object); validator.AddParameter<ITest, IParameter>(parameterMock);
validator.Validate(); validator.Validate();
parameterMock.Verify(p => p.Method(), Times.Never); parameterMock.DidNotReceive().Method();
} }
[Test] [Test]
@ -181,8 +181,8 @@ public class IocValidatorTest
IocValidator validator = new(iocContainer); IocValidator validator = new(iocContainer);
Mock<IParameter> parameterMock = new(); IParameter parameterMock = Substitute.For<IParameter>();
validator.AddParameter<ITest, IParameter>(parameterMock.Object); validator.AddParameter<ITest, IParameter>(parameterMock);
AggregateException aggregateException = Assert.Throws<AggregateException>(() => validator.Validate()); AggregateException aggregateException = Assert.Throws<AggregateException>(() => validator.Validate());

@ -11,7 +11,7 @@
<ItemGroup> <ItemGroup>
<PackageReference Include="JetBrains.Annotations" Version="2022.1.0" /> <PackageReference Include="JetBrains.Annotations" Version="2022.1.0" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.3.1" /> <PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.3.1" />
<PackageReference Include="Moq" Version="4.18.2" /> <PackageReference Include="NSubstitute" Version="5.0.0" />
<PackageReference Include="nunit" Version="3.13.3" /> <PackageReference Include="nunit" Version="3.13.3" />
<PackageReference Include="NUnit3TestAdapter" Version="4.2.1"> <PackageReference Include="NUnit3TestAdapter" Version="4.2.1">
<PrivateAssets>all</PrivateAssets> <PrivateAssets>all</PrivateAssets>

@ -9,7 +9,7 @@ using LightweightIocContainer.Installers;
using LightweightIocContainer.Interfaces; using LightweightIocContainer.Interfaces;
using LightweightIocContainer.Interfaces.Installers; using LightweightIocContainer.Interfaces.Installers;
using LightweightIocContainer.Interfaces.Registrations; using LightweightIocContainer.Interfaces.Registrations;
using Moq; using NSubstitute;
using NUnit.Framework; using NUnit.Framework;
namespace Test.LightweightIocContainer; namespace Test.LightweightIocContainer;
@ -20,7 +20,7 @@ public class AssemblyInstallerTest
[UsedImplicitly] [UsedImplicitly]
public class TestInstaller : IIocInstaller public class TestInstaller : IIocInstaller
{ {
public void Install(IRegistrationCollector registration) => registration.Add<Mock<IRegistration>>(); public void Install(IRegistrationCollector registration) => registration.Add<IRegistration>();
} }
[UsedImplicitly] [UsedImplicitly]
@ -39,15 +39,15 @@ public class AssemblyInstallerTest
typeof(TestInstaller) typeof(TestInstaller)
}; };
Mock<AssemblyWrapper> assemblyMock = new(); AssemblyWrapper assemblyMock = Substitute.For<AssemblyWrapper>();
assemblyMock.Setup(a => a.GetTypes()).Returns(types.ToArray); assemblyMock.GetTypes().Returns(types.ToArray());
Mock<IRegistrationCollector> registrationCollectorMock = new(); IRegistrationCollector registrationCollectorMock = Substitute.For<IRegistrationCollector>();
AssemblyInstaller assemblyInstaller = new(assemblyMock.Object); AssemblyInstaller assemblyInstaller = new(assemblyMock);
assemblyInstaller.Install(registrationCollectorMock.Object); assemblyInstaller.Install(registrationCollectorMock);
registrationCollectorMock.Verify(r => r.Add<It.IsSubtype<Mock<IRegistration>>>(It.IsAny<Lifestyle>()), Times.Once); registrationCollectorMock.Received(1).Add<IRegistration>(Arg.Any<Lifestyle>());
} }
[Test] [Test]
@ -66,10 +66,10 @@ public class AssemblyInstallerTest
typeof(TestInstaller) typeof(TestInstaller)
}; };
Mock<AssemblyWrapper> assemblyMock = new(); AssemblyWrapper assemblyMock = Substitute.For<AssemblyWrapper>();
assemblyMock.Setup(a => a.GetTypes()).Returns(types.ToArray); assemblyMock.GetTypes().Returns(types.ToArray());
IIocContainer iocContainer = new IocContainer(); IIocContainer iocContainer = new IocContainer();
iocContainer.Install(FromAssembly.Instance(assemblyMock.Object)); iocContainer.Install(FromAssembly.Instance(assemblyMock));
} }
} }

@ -5,7 +5,7 @@
using System.Diagnostics.CodeAnalysis; using System.Diagnostics.CodeAnalysis;
using JetBrains.Annotations; using JetBrains.Annotations;
using LightweightIocContainer; using LightweightIocContainer;
using Moq; using NSubstitute;
using NUnit.Framework; using NUnit.Framework;
namespace Test.LightweightIocContainer; namespace Test.LightweightIocContainer;
@ -83,18 +83,18 @@ public class EnumerableExtensionTest
[Test] [Test]
public void TestForEach() public void TestForEach()
{ {
Mock<ITest> test1 = new(); ITest test1 = Substitute.For<ITest>();
Mock<ITest> test2 = new(); ITest test2 = Substitute.For<ITest>();
Mock<ITest> test3 = new(); ITest test3 = Substitute.For<ITest>();
Mock<ITest> test4 = new(); ITest test4 = Substitute.For<ITest>();
IEnumerable<ITest> enumerable = new[] { test1.Object, test2.Object, test3.Object, test4.Object }; IEnumerable<ITest> enumerable = new[] { test1, test2, test3, test4 };
enumerable.ForEach(t => t.DoSomething()); enumerable.ForEach(t => t.DoSomething());
test1.Verify(t => t.DoSomething(), Times.Once); test1.Received(1).DoSomething();
test2.Verify(t => t.DoSomething(), Times.Once); test2.Received(1).DoSomething();
test3.Verify(t => t.DoSomething(), Times.Once); test3.Received(1).DoSomething();
test4.Verify(t => t.DoSomething(), Times.Once); test4.Received(1).DoSomething();
} }
} }

@ -5,7 +5,7 @@
using JetBrains.Annotations; using JetBrains.Annotations;
using LightweightIocContainer; using LightweightIocContainer;
using LightweightIocContainer.Exceptions; using LightweightIocContainer.Exceptions;
using Moq; using NSubstitute;
using NUnit.Framework; using NUnit.Framework;
namespace Test.LightweightIocContainer; namespace Test.LightweightIocContainer;
@ -148,8 +148,8 @@ public class IocContainerRecursionTest
_iocContainer.Register(r => r.Add<IFoo, Foo>()); _iocContainer.Register(r => r.Add<IFoo, Foo>());
_iocContainer.Register(r => r.Add<IBar, Bar>()); _iocContainer.Register(r => r.Add<IBar, Bar>());
Assert.DoesNotThrow(() => _iocContainer.Resolve<IFoo>(new Mock<IBar>().Object)); Assert.DoesNotThrow(() => _iocContainer.Resolve<IFoo>(Substitute.For<IBar>()));
Assert.DoesNotThrow(() => _iocContainer.Resolve<IBar>(new Mock<IFoo>().Object)); Assert.DoesNotThrow(() => _iocContainer.Resolve<IBar>(Substitute.For<IFoo>()));
} }
[Test] [Test]

@ -4,7 +4,7 @@ using LightweightIocContainer.Exceptions;
using LightweightIocContainer.Interfaces; using LightweightIocContainer.Interfaces;
using LightweightIocContainer.Interfaces.Installers; using LightweightIocContainer.Interfaces.Installers;
using LightweightIocContainer.Interfaces.Registrations; using LightweightIocContainer.Interfaces.Registrations;
using Moq; using NSubstitute;
using NUnit.Framework; using NUnit.Framework;
namespace Test.LightweightIocContainer; namespace Test.LightweightIocContainer;
@ -119,10 +119,10 @@ public class IocContainerTest
[Test] [Test]
public void TestInstall() public void TestInstall()
{ {
Mock<IIocInstaller> installerMock = new(); IIocInstaller installerMock = Substitute.For<IIocInstaller>();
IIocContainer returnedContainer = _iocContainer.Install(installerMock.Object); IIocContainer returnedContainer = _iocContainer.Install(installerMock);
installerMock.Verify(m => m.Install(It.IsAny<IRegistrationCollector>()), Times.Once); installerMock.Received(1).Install(Arg.Any<IRegistrationCollector>());
Assert.AreEqual(_iocContainer, returnedContainer); Assert.AreEqual(_iocContainer, returnedContainer);
} }
@ -130,15 +130,15 @@ public class IocContainerTest
[Test] [Test]
public void TestInstallMultiple() public void TestInstallMultiple()
{ {
Mock<IIocInstaller> installer1Mock = new(); IIocInstaller installer1Mock = Substitute.For<IIocInstaller>();
Mock<IIocInstaller> installer2Mock = new(); IIocInstaller installer2Mock = Substitute.For<IIocInstaller>();
Mock<IIocInstaller> installer3Mock = new(); IIocInstaller installer3Mock = Substitute.For<IIocInstaller>();
IIocContainer returnedContainer = _iocContainer.Install(installer1Mock.Object, installer2Mock.Object, installer3Mock.Object); IIocContainer returnedContainer = _iocContainer.Install(installer1Mock, installer2Mock, installer3Mock);
installer1Mock.Verify(m => m.Install(It.IsAny<IRegistrationCollector>()), Times.Once); installer1Mock.Received(1).Install(Arg.Any<IRegistrationCollector>());
installer2Mock.Verify(m => m.Install(It.IsAny<IRegistrationCollector>()), Times.Once); installer2Mock.Received(1).Install(Arg.Any<IRegistrationCollector>());
installer3Mock.Verify(m => m.Install(It.IsAny<IRegistrationCollector>()), Times.Once); installer3Mock.Received(1).Install(Arg.Any<IRegistrationCollector>());
Assert.AreEqual(_iocContainer, returnedContainer); Assert.AreEqual(_iocContainer, returnedContainer);
} }

@ -5,7 +5,7 @@
using LightweightIocContainer; using LightweightIocContainer;
using LightweightIocContainer.Interfaces.Registrations; using LightweightIocContainer.Interfaces.Registrations;
using LightweightIocContainer.Registrations; using LightweightIocContainer.Registrations;
using Moq; using NSubstitute;
using NUnit.Framework; using NUnit.Framework;
namespace Test.LightweightIocContainer; namespace Test.LightweightIocContainer;
@ -27,7 +27,7 @@ public class OnCreateTest
[Test] [Test]
public void TestOnCreate() public void TestOnCreate()
{ {
RegistrationFactory registrationFactory = new(new Mock<IocContainer>().Object); RegistrationFactory registrationFactory = new(Substitute.For<IocContainer>());
ITypedRegistration<ITest, Test> testRegistration = registrationFactory.Register<ITest, Test>(Lifestyle.Transient).OnCreate(t => t.DoSomething()); ITypedRegistration<ITest, Test> testRegistration = registrationFactory.Register<ITest, Test>(Lifestyle.Transient).OnCreate(t => t.DoSomething());
Test test = new(); Test test = new();

@ -7,7 +7,7 @@ using LightweightIocContainer;
using LightweightIocContainer.Exceptions; using LightweightIocContainer.Exceptions;
using LightweightIocContainer.Registrations; using LightweightIocContainer.Registrations;
using LightweightIocContainer.ResolvePlaceholders; using LightweightIocContainer.ResolvePlaceholders;
using Moq; using NSubstitute;
using NUnit.Framework; using NUnit.Framework;
namespace Test.LightweightIocContainer; namespace Test.LightweightIocContainer;
@ -53,7 +53,7 @@ public class RegistrationBaseTest
[Test] [Test]
public void TestWithParameters() public void TestWithParameters()
{ {
RegistrationFactory registrationFactory = new(new Mock<IocContainer>().Object); RegistrationFactory registrationFactory = new(Substitute.For<IocContainer>());
IBar bar = new Bar(); IBar bar = new Bar();
ITest test = new Test(); ITest test = new Test();
@ -67,7 +67,7 @@ public class RegistrationBaseTest
[Test] [Test]
public void TestWithParametersDifferentOrder() public void TestWithParametersDifferentOrder()
{ {
RegistrationFactory registrationFactory = new(new Mock<IocContainer>().Object); RegistrationFactory registrationFactory = new(Substitute.For<IocContainer>());
IBar bar = new Bar(); IBar bar = new Bar();
ITest test = new Test(); ITest test = new Test();
@ -83,7 +83,7 @@ public class RegistrationBaseTest
[Test] [Test]
public void TestWithParametersCalledTwice() public void TestWithParametersCalledTwice()
{ {
RegistrationFactory registrationFactory = new(new Mock<IocContainer>().Object); RegistrationFactory registrationFactory = new(Substitute.For<IocContainer>());
Assert.Throws<InvalidRegistrationException>(() => registrationFactory.Register<IFoo, Foo>(Lifestyle.Transient).WithParameters(new Bar()).WithParameters(new Test())); Assert.Throws<InvalidRegistrationException>(() => registrationFactory.Register<IFoo, Foo>(Lifestyle.Transient).WithParameters(new Bar()).WithParameters(new Test()));
Assert.Throws<InvalidRegistrationException>(() => registrationFactory.Register<IFoo, Foo>(Lifestyle.Transient).WithParameters((0, new Bar())).WithParameters((1, new Test()))); Assert.Throws<InvalidRegistrationException>(() => registrationFactory.Register<IFoo, Foo>(Lifestyle.Transient).WithParameters((0, new Bar())).WithParameters((1, new Test())));
} }
@ -91,7 +91,7 @@ public class RegistrationBaseTest
[Test] [Test]
public void TestWithParametersNoParametersGiven() public void TestWithParametersNoParametersGiven()
{ {
RegistrationFactory registrationFactory = new(new Mock<IocContainer>().Object); RegistrationFactory registrationFactory = new(Substitute.For<IocContainer>());
Assert.Throws<InvalidRegistrationException>(() => registrationFactory.Register<IFoo, Foo>(Lifestyle.Transient).WithParameters((object[])null)); Assert.Throws<InvalidRegistrationException>(() => registrationFactory.Register<IFoo, Foo>(Lifestyle.Transient).WithParameters((object[])null));
Assert.Throws<InvalidRegistrationException>(() => registrationFactory.Register<IFoo, Foo>(Lifestyle.Transient).WithParameters(((int index, object parameter)[])null)); Assert.Throws<InvalidRegistrationException>(() => registrationFactory.Register<IFoo, Foo>(Lifestyle.Transient).WithParameters(((int index, object parameter)[])null));
} }

@ -6,7 +6,7 @@ using JetBrains.Annotations;
using LightweightIocContainer; using LightweightIocContainer;
using LightweightIocContainer.Interfaces.Registrations; using LightweightIocContainer.Interfaces.Registrations;
using LightweightIocContainer.Registrations; using LightweightIocContainer.Registrations;
using Moq; using NSubstitute;
using NUnit.Framework; using NUnit.Framework;
namespace Test.LightweightIocContainer; namespace Test.LightweightIocContainer;
@ -20,7 +20,8 @@ public class SingleTypeRegistrationTest
IBar Bar { get; } IBar Bar { get; }
} }
private interface IBar [UsedImplicitly]
public interface IBar
{ {
} }
@ -44,13 +45,13 @@ public class SingleTypeRegistrationTest
{ {
IBar bar = new Bar(); IBar bar = new Bar();
Mock<IocContainer> iocContainerMock = new(); IocContainer iocContainerMock = Substitute.For<IocContainer>();
iocContainerMock.Setup(c => c.Resolve<IBar>()).Returns(bar); iocContainerMock.Resolve<IBar>().Returns(bar);
RegistrationFactory registrationFactory = new(iocContainerMock.Object); RegistrationFactory registrationFactory = new(iocContainerMock);
ISingleTypeRegistration<IFoo> registration = registrationFactory.Register<IFoo>(Lifestyle.Transient).WithFactoryMethod(c => new Foo(c.Resolve<IBar>())); ISingleTypeRegistration<IFoo> registration = registrationFactory.Register<IFoo>(Lifestyle.Transient).WithFactoryMethod(c => new Foo(c.Resolve<IBar>()));
IFoo foo = registration.FactoryMethod!(iocContainerMock.Object); IFoo foo = registration.FactoryMethod!(iocContainerMock);
Assert.AreEqual(bar, foo.Bar); Assert.AreEqual(bar, foo.Bar);
} }

@ -11,7 +11,7 @@
<ItemGroup> <ItemGroup>
<PackageReference Include="JetBrains.Annotations" Version="2022.1.0" /> <PackageReference Include="JetBrains.Annotations" Version="2022.1.0" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.3.1" /> <PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.3.1" />
<PackageReference Include="Moq" Version="4.18.2" /> <PackageReference Include="NSubstitute" Version="5.0.0" />
<PackageReference Include="nunit" Version="3.13.3" /> <PackageReference Include="nunit" Version="3.13.3" />
<PackageReference Include="NUnit3TestAdapter" Version="4.2.1"> <PackageReference Include="NUnit3TestAdapter" Version="4.2.1">
<PrivateAssets>all</PrivateAssets> <PrivateAssets>all</PrivateAssets>

Loading…
Cancel
Save