From b7244b2bdbcf3ce2c2fad9e00a3f2c7b06d6375a Mon Sep 17 00:00:00 2001 From: Macocian Alexandru Victor Date: Wed, 9 Aug 2023 16:11:11 +0200 Subject: [PATCH] Replace Moq with NSubstitute (#51) --- .../Configuration/LiveOptionsResolverTests.cs | 14 ++--- .../LiveUpdateableOptionsResolverTests.cs | 14 ++--- .../LiveUpdateableOptionsWrapperTests.cs | 16 ++---- .../Configuration/OptionsResolverTests.cs | 14 ++--- .../UpdateableOptionsResolverTests.cs | 14 ++--- .../UpdateableOptionsWrapperTests.cs | 17 ++---- .../Http/HttpClientBuilderTests.cs | 57 ++++++++++--------- .../Http/HttpClientResolverTests.cs | 10 ++-- .../Logging/CVLoggerProviderTests.cs | 15 ++--- .../Logging/CVLoggerTests.cs | 17 ++---- .../Logging/LoggerResolverTests.cs | 24 ++++---- ...tStandard.DependencyInjection.Tests.csproj | 6 +- .../ClientWebSocketResolverTests.cs | 15 +++-- 13 files changed, 101 insertions(+), 132 deletions(-) diff --git a/SystemExtensions.DependencyInjection.Tests/Configuration/LiveOptionsResolverTests.cs b/SystemExtensions.DependencyInjection.Tests/Configuration/LiveOptionsResolverTests.cs index aea3e30..a384c61 100644 --- a/SystemExtensions.DependencyInjection.Tests/Configuration/LiveOptionsResolverTests.cs +++ b/SystemExtensions.DependencyInjection.Tests/Configuration/LiveOptionsResolverTests.cs @@ -1,6 +1,6 @@ using FluentAssertions; using Microsoft.VisualStudio.TestTools.UnitTesting; -using Moq; +using NSubstitute; using System; using System.Configuration; @@ -10,8 +10,8 @@ namespace SystemExtensions.DependencyInjection.Tests.Configuration; public class LiveOptionsResolverTests { private readonly LiveOptionsResolver liveOptionsResolver = new(); - private readonly Mock serviceProviderMock = new(); - private readonly Mock optionsManagerMock = new(); + private readonly Slim.IServiceProvider serviceProviderMock = Substitute.For(); + private readonly IOptionsManager optionsManagerMock = Substitute.For(); [TestMethod] public void CanResolve_ILiveOptions_ReturnsTrue() @@ -41,7 +41,7 @@ public class LiveOptionsResolverTests { this.SetupServiceProvider(); - var liveOptions = this.liveOptionsResolver.Resolve(this.serviceProviderMock.Object, typeof(ILiveOptions)); + var liveOptions = this.liveOptionsResolver.Resolve(this.serviceProviderMock, typeof(ILiveOptions)); liveOptions.Should().BeAssignableTo>(); } @@ -53,7 +53,7 @@ public class LiveOptionsResolverTests Action action = new(() => { - this.liveOptionsResolver.Resolve(this.serviceProviderMock.Object, typeof(string)); + this.liveOptionsResolver.Resolve(this.serviceProviderMock, typeof(string)); }); action.Should().Throw(); @@ -61,8 +61,6 @@ public class LiveOptionsResolverTests private void SetupServiceProvider() { - this.serviceProviderMock - .Setup(u => u.GetService()) - .Returns(this.optionsManagerMock.Object); + this.serviceProviderMock.GetService().Returns(this.optionsManagerMock); } } diff --git a/SystemExtensions.DependencyInjection.Tests/Configuration/LiveUpdateableOptionsResolverTests.cs b/SystemExtensions.DependencyInjection.Tests/Configuration/LiveUpdateableOptionsResolverTests.cs index 13b1fba..9a864fd 100644 --- a/SystemExtensions.DependencyInjection.Tests/Configuration/LiveUpdateableOptionsResolverTests.cs +++ b/SystemExtensions.DependencyInjection.Tests/Configuration/LiveUpdateableOptionsResolverTests.cs @@ -1,6 +1,6 @@ using FluentAssertions; using Microsoft.VisualStudio.TestTools.UnitTesting; -using Moq; +using NSubstitute; using System; using System.Configuration; @@ -10,8 +10,8 @@ namespace SystemExtensions.DependencyInjection.Tests.Configuration; public class LiveUpdateableOptionsResolverTests { private readonly LiveUpdateableOptionsResolver liveUpdateableOptionsResolver = new(); - private readonly Mock serviceProviderMock = new(); - private readonly Mock optionsManagerMock = new(); + private readonly Slim.IServiceProvider serviceProviderMock = Substitute.For(); + private readonly IOptionsManager optionsManagerMock = Substitute.For(); [TestMethod] public void CanResolve_ILiveUpdateableOptions_ReturnsTrue() @@ -41,7 +41,7 @@ public class LiveUpdateableOptionsResolverTests { this.SetupServiceProvider(); - var liveOptions = this.liveUpdateableOptionsResolver.Resolve(this.serviceProviderMock.Object, typeof(ILiveUpdateableOptions)); + var liveOptions = this.liveUpdateableOptionsResolver.Resolve(this.serviceProviderMock, typeof(ILiveUpdateableOptions)); liveOptions.Should().BeAssignableTo>(); } @@ -53,7 +53,7 @@ public class LiveUpdateableOptionsResolverTests Action action = new(() => { - this.liveUpdateableOptionsResolver.Resolve(this.serviceProviderMock.Object, typeof(string)); + this.liveUpdateableOptionsResolver.Resolve(this.serviceProviderMock, typeof(string)); }); action.Should().Throw(); @@ -61,8 +61,6 @@ public class LiveUpdateableOptionsResolverTests private void SetupServiceProvider() { - this.serviceProviderMock - .Setup(u => u.GetService()) - .Returns(this.optionsManagerMock.Object); + this.serviceProviderMock.GetService().Returns(this.optionsManagerMock); } } diff --git a/SystemExtensions.DependencyInjection.Tests/Configuration/LiveUpdateableOptionsWrapperTests.cs b/SystemExtensions.DependencyInjection.Tests/Configuration/LiveUpdateableOptionsWrapperTests.cs index 8ea9f96..5844b7e 100644 --- a/SystemExtensions.DependencyInjection.Tests/Configuration/LiveUpdateableOptionsWrapperTests.cs +++ b/SystemExtensions.DependencyInjection.Tests/Configuration/LiveUpdateableOptionsWrapperTests.cs @@ -1,6 +1,6 @@ using FluentAssertions; using Microsoft.VisualStudio.TestTools.UnitTesting; -using Moq; +using NSubstitute; using System.Configuration; namespace SystemExtensions.DependencyInjection.Tests.Configuration; @@ -9,20 +9,18 @@ namespace SystemExtensions.DependencyInjection.Tests.Configuration; public class LiveUpdateableOptionsWrapperTests { private LiveUpdateableOptionsWrapper optionsWrapper; - private readonly Mock optionsManagerMock = new(); + private readonly IOptionsManager optionsManagerMock = Substitute.For(); [TestInitialize] public void TestInitialize() { - this.optionsWrapper = new LiveUpdateableOptionsWrapper(this.optionsManagerMock.Object); + this.optionsWrapper = new LiveUpdateableOptionsWrapper(this.optionsManagerMock); } [TestMethod] public void GetValue_ReturnsValue() { - this.optionsManagerMock - .Setup(u => u.GetOptions()) - .Returns("hello"); + this.optionsManagerMock.GetOptions().Returns("hello"); var value = this.optionsWrapper.Value; @@ -32,12 +30,8 @@ public class LiveUpdateableOptionsWrapperTests [TestMethod] public void UpdateOption_CallsOptionsManager() { - this.optionsManagerMock - .Setup(u => u.UpdateOptions(It.IsAny())) - .Verifiable(); - this.optionsWrapper.UpdateOption(); - this.optionsManagerMock.Verify(); + this.optionsManagerMock.ReceivedWithAnyArgs().UpdateOptions(Arg.Any()); } } diff --git a/SystemExtensions.DependencyInjection.Tests/Configuration/OptionsResolverTests.cs b/SystemExtensions.DependencyInjection.Tests/Configuration/OptionsResolverTests.cs index 8d5d8bd..d106500 100644 --- a/SystemExtensions.DependencyInjection.Tests/Configuration/OptionsResolverTests.cs +++ b/SystemExtensions.DependencyInjection.Tests/Configuration/OptionsResolverTests.cs @@ -1,7 +1,7 @@ using FluentAssertions; using Microsoft.Extensions.Options; using Microsoft.VisualStudio.TestTools.UnitTesting; -using Moq; +using NSubstitute; using System; using System.Configuration; @@ -11,9 +11,9 @@ namespace SystemExtensions.DependencyInjection.Tests.Configuration; public class OptionsResolverTests { private readonly OptionsResolver optionsResolver = new(); - private readonly Mock serviceProviderMock = new(); + private readonly Slim.IServiceProvider serviceProviderMock = Substitute.For(); - public Mock OptionsManagerMock { get; } = new(); + public IOptionsManager OptionsManagerMock { get; } = Substitute.For(); [TestMethod] public void CanResolve_ILiveOptions_ReturnsTrue() @@ -43,7 +43,7 @@ public class OptionsResolverTests { this.SetupServiceProvider(); - var liveOptions = this.optionsResolver.Resolve(this.serviceProviderMock.Object, typeof(IOptions)); + var liveOptions = this.optionsResolver.Resolve(this.serviceProviderMock, typeof(IOptions)); liveOptions.Should().BeAssignableTo>(); } @@ -55,7 +55,7 @@ public class OptionsResolverTests Action action = new(() => { - this.optionsResolver.Resolve(this.serviceProviderMock.Object, typeof(string)); + this.optionsResolver.Resolve(this.serviceProviderMock, typeof(string)); }); action.Should().Throw(); @@ -63,8 +63,6 @@ public class OptionsResolverTests private void SetupServiceProvider() { - this.serviceProviderMock - .Setup(u => u.GetService()) - .Returns(this.OptionsManagerMock.Object); + this.serviceProviderMock.GetService().Returns(this.OptionsManagerMock); } } diff --git a/SystemExtensions.DependencyInjection.Tests/Configuration/UpdateableOptionsResolverTests.cs b/SystemExtensions.DependencyInjection.Tests/Configuration/UpdateableOptionsResolverTests.cs index ad27069..72f92d8 100644 --- a/SystemExtensions.DependencyInjection.Tests/Configuration/UpdateableOptionsResolverTests.cs +++ b/SystemExtensions.DependencyInjection.Tests/Configuration/UpdateableOptionsResolverTests.cs @@ -1,6 +1,6 @@ using FluentAssertions; using Microsoft.VisualStudio.TestTools.UnitTesting; -using Moq; +using NSubstitute; using System; using System.Configuration; @@ -10,8 +10,8 @@ namespace SystemExtensions.DependencyInjection.Tests.Configuration; public class UpdateableOptionsResolverTests { private readonly UpdateableOptionsResolver updateableOptionsResolver = new(); - private readonly Mock serviceProviderMock = new(); - private readonly Mock optionsManagerMock = new(); + private readonly Slim.IServiceProvider serviceProviderMock = Substitute.For(); + private readonly IOptionsManager optionsManagerMock = Substitute.For(); [TestMethod] public void CanResolve_ILiveOptions_ReturnsTrue() @@ -41,7 +41,7 @@ public class UpdateableOptionsResolverTests { this.SetupServiceProvider(); - var liveOptions = this.updateableOptionsResolver.Resolve(this.serviceProviderMock.Object, typeof(IUpdateableOptions)); + var liveOptions = this.updateableOptionsResolver.Resolve(this.serviceProviderMock, typeof(IUpdateableOptions)); liveOptions.Should().BeAssignableTo>(); } @@ -53,7 +53,7 @@ public class UpdateableOptionsResolverTests Action action = new(() => { - this.updateableOptionsResolver.Resolve(this.serviceProviderMock.Object, typeof(string)); + this.updateableOptionsResolver.Resolve(this.serviceProviderMock, typeof(string)); }); action.Should().Throw(); @@ -61,8 +61,6 @@ public class UpdateableOptionsResolverTests private void SetupServiceProvider() { - this.serviceProviderMock - .Setup(u => u.GetService()) - .Returns(this.optionsManagerMock.Object); + this.serviceProviderMock.GetService().Returns(this.optionsManagerMock); } } diff --git a/SystemExtensions.DependencyInjection.Tests/Configuration/UpdateableOptionsWrapperTests.cs b/SystemExtensions.DependencyInjection.Tests/Configuration/UpdateableOptionsWrapperTests.cs index cbd029c..e65ead8 100644 --- a/SystemExtensions.DependencyInjection.Tests/Configuration/UpdateableOptionsWrapperTests.cs +++ b/SystemExtensions.DependencyInjection.Tests/Configuration/UpdateableOptionsWrapperTests.cs @@ -1,6 +1,7 @@ using FluentAssertions; using Microsoft.VisualStudio.TestTools.UnitTesting; -using Moq; +using NSubstitute; +using NSubstitute.ExceptionExtensions; using System; using System.Configuration; using System.Extensions.Configuration; @@ -13,20 +14,18 @@ public class UpdateableOptionsWrapperTests private const string Value = "hello"; private UpdateableOptionsWrapper optionsWrapper; - private readonly Mock optionsManagerMock = new(); + private readonly IOptionsManager optionsManagerMock = Substitute.For(); [TestInitialize] public void TestInitialize() { - this.optionsWrapper = new UpdateableOptionsWrapper(this.optionsManagerMock.Object, Value); + this.optionsWrapper = new UpdateableOptionsWrapper(this.optionsManagerMock, Value); } [TestMethod] public void GetValue_ReturnsValue() { - this.optionsManagerMock - .Setup(u => u.GetOptions()) - .Throws(); + this.optionsManagerMock.GetOptions().Throws(); var value = this.optionsWrapper.Value; @@ -36,12 +35,8 @@ public class UpdateableOptionsWrapperTests [TestMethod] public void UpdateOption_CallsOptionsManager() { - this.optionsManagerMock - .Setup(u => u.UpdateOptions(It.IsAny())) - .Verifiable(); - this.optionsWrapper.UpdateOption(); - this.optionsManagerMock.Verify(); + this.optionsManagerMock.ReceivedWithAnyArgs().UpdateOptions(Arg.Any()); } } diff --git a/SystemExtensions.DependencyInjection.Tests/Http/HttpClientBuilderTests.cs b/SystemExtensions.DependencyInjection.Tests/Http/HttpClientBuilderTests.cs index d958fa1..7ff7344 100644 --- a/SystemExtensions.DependencyInjection.Tests/Http/HttpClientBuilderTests.cs +++ b/SystemExtensions.DependencyInjection.Tests/Http/HttpClientBuilderTests.cs @@ -1,6 +1,7 @@ using FluentAssertions; using Microsoft.VisualStudio.TestTools.UnitTesting; -using Moq; +using NSubstitute; +using NSubstitute.ExceptionExtensions; using Slim; using System; using System.Linq; @@ -17,12 +18,12 @@ public sealed class HttpClientBuilderTests private const string SomeValue = "SomeValue"; private readonly HttpClientBuilder httpClientBuilder; - private readonly Mock serviceProducerMock = new(); + private readonly IServiceProducer serviceProducerMock = Substitute.For(); private readonly Uri baseAddress = new("http://contoso.co"); public HttpClientBuilderTests() { - this.httpClientBuilder = new HttpClientBuilder(this.serviceProducerMock.Object); + this.httpClientBuilder = new HttpClientBuilder(this.serviceProducerMock); } [TestMethod] @@ -62,26 +63,25 @@ public sealed class HttpClientBuilderTests { var producer = this.httpClientBuilder.Build(); - producer.Should().Be(this.serviceProducerMock.Object); + producer.Should().Be(this.serviceProducerMock); } [TestMethod] public void Build_RegistersWithServiceProducer() { - this.serviceProducerMock.Setup(u => u.RegisterScoped(It.IsAny>>(), false)); - this.httpClientBuilder.Build(); - this.serviceProducerMock.Verify(); + this.serviceProducerMock.Received().RegisterScoped(Arg.Any>>(), false); } [TestMethod] public void Build_CreatesExpectedClient() { - this.serviceProducerMock.Setup(u => u.RegisterScoped(It.IsAny>>(), false)) - .Callback>, bool>((factory, _) => + this.serviceProducerMock.When(u => u.RegisterScoped(Arg.Any>>(), false)) + .Do(callInfo => { - var client = factory(new Mock().Object); + var factory = callInfo.ArgAt>>(0); + var client = factory(Substitute.For()); client.BaseAddress.Should().BeNull(); client.DefaultRequestHeaders.Should().BeEmpty(); client.MaxResponseContentBufferSize.Should().Be(2147483647L); @@ -89,15 +89,17 @@ public sealed class HttpClientBuilderTests }); this.httpClientBuilder.Build(); + } [TestMethod] public void Build_WithBaseAddress_ReturnsClientWithBaseAddress() { - this.serviceProducerMock.Setup(u => u.RegisterScoped(It.IsAny>>(), false)) - .Callback>, bool>((factory, _) => + this.serviceProducerMock.When(u => u.RegisterScoped(Arg.Any>>(), false)) + .Do(callInfo => { - var client = factory(new Mock().Object); + var factory = callInfo.ArgAt>>(0); + var client = factory(Substitute.For()); client.BaseAddress.Should().Be(this.baseAddress); }); @@ -108,12 +110,12 @@ public sealed class HttpClientBuilderTests [TestMethod] public void Build_WithDefaultRequestHeaders_CallsFactory() { - this.serviceProducerMock.Setup(u => u.RegisterScoped(It.IsAny>>(), false)) - .Callback>, bool>((factory, _) => + this.serviceProducerMock.When(u => u.RegisterScoped(Arg.Any>>(), false)) + .Do(callInfo => { - var client = factory(new Mock().Object); + var factory = callInfo.ArgAt>>(0); + var client = factory(Substitute.For()); client.DefaultRequestHeaders.TryGetValues(SomeHeader, out var values); - values.Should().HaveCount(1); values.FirstOrDefault().Should().Be(SomeValue); }); @@ -127,10 +129,11 @@ public sealed class HttpClientBuilderTests [TestMethod] public void Build_WithMaxResponseBufferSize_ReturnsClientWithMaxResponseBufferSize() { - this.serviceProducerMock.Setup(u => u.RegisterScoped(It.IsAny>>(), false)) - .Callback>, bool>((factory, _) => + this.serviceProducerMock.When(u => u.RegisterScoped(Arg.Any>>(), false)) + .Do(callInfo => { - var client = factory(new Mock().Object); + var factory = callInfo.ArgAt>>(0); + var client = factory(Substitute.For()); client.MaxResponseContentBufferSize.Should().Be(100); }); @@ -141,10 +144,11 @@ public sealed class HttpClientBuilderTests [TestMethod] public void Build_WithTimeout_ReturnsClientWithTimeout() { - this.serviceProducerMock.Setup(u => u.RegisterScoped(It.IsAny>>(), false)) - .Callback>, bool>((factory, _) => + this.serviceProducerMock.When(u => u.RegisterScoped(Arg.Any>>(), false)) + .Do(callInfo => { - var client = factory(new Mock().Object); + var factory = callInfo.ArgAt>>(0); + var client = factory(Substitute.For()); client.Timeout.Should().Be(TimeSpan.FromSeconds(5)); }); @@ -156,10 +160,11 @@ public sealed class HttpClientBuilderTests public void Build_WithMessageHandler_CallsMessageHandler() { var handlerMock = new HttpMessageHandlerMock(); - this.serviceProducerMock.Setup(u => u.RegisterScoped(It.IsAny>>(), false)) - .Callback>, bool>(async (factory, _) => + this.serviceProducerMock.When(u => u.RegisterScoped(Arg.Any>>(), false)) + .Do(async callInfo => { - var client = factory(new Mock().Object); + var factory = callInfo.ArgAt>>(0); + var client = factory(Substitute.For()); await client.GetAsync(this.baseAddress); handlerMock.Called.Should().BeTrue(); }); diff --git a/SystemExtensions.DependencyInjection.Tests/Http/HttpClientResolverTests.cs b/SystemExtensions.DependencyInjection.Tests/Http/HttpClientResolverTests.cs index 8adb277..eaf7fef 100644 --- a/SystemExtensions.DependencyInjection.Tests/Http/HttpClientResolverTests.cs +++ b/SystemExtensions.DependencyInjection.Tests/Http/HttpClientResolverTests.cs @@ -1,6 +1,6 @@ using FluentAssertions; using Microsoft.VisualStudio.TestTools.UnitTesting; -using Moq; +using NSubstitute; using System; using System.Net.Http; @@ -10,7 +10,7 @@ namespace SystemExtensions.DependencyInjection.Tests.Http; public class HttpClientResolverTests { private readonly HttpClientResolver httpClientResolver = new(); - private readonly Mock serviceProviderMock = new(); + private readonly Slim.IServiceProvider serviceProviderMock = Substitute.For(); [TestMethod] public void CanResolve_IHttpClient_ReturnsTrue() @@ -38,7 +38,7 @@ public class HttpClientResolverTests [TestMethod] public void Resolve_TypedClient_ReturnsIHttpClient() { - var client = this.httpClientResolver.Resolve(this.serviceProviderMock.Object, typeof(IHttpClient)); + var client = this.httpClientResolver.Resolve(this.serviceProviderMock, typeof(IHttpClient)); client.Should().BeAssignableTo>(); } @@ -48,7 +48,7 @@ public class HttpClientResolverTests { Action action = new(() => { - this.httpClientResolver.Resolve(this.serviceProviderMock.Object, typeof(IHttpClient<>)); + this.httpClientResolver.Resolve(this.serviceProviderMock, typeof(IHttpClient<>)); }); action.Should().Throw(); @@ -59,7 +59,7 @@ public class HttpClientResolverTests { Action action = new(() => { - this.httpClientResolver.Resolve(this.serviceProviderMock.Object, typeof(string)); + this.httpClientResolver.Resolve(this.serviceProviderMock, typeof(string)); }); action.Should().Throw(); diff --git a/SystemExtensions.DependencyInjection.Tests/Logging/CVLoggerProviderTests.cs b/SystemExtensions.DependencyInjection.Tests/Logging/CVLoggerProviderTests.cs index 0b69dde..3783a26 100644 --- a/SystemExtensions.DependencyInjection.Tests/Logging/CVLoggerProviderTests.cs +++ b/SystemExtensions.DependencyInjection.Tests/Logging/CVLoggerProviderTests.cs @@ -1,6 +1,6 @@ using FluentAssertions; using Microsoft.VisualStudio.TestTools.UnitTesting; -using Moq; +using NSubstitute; using System.Logging; namespace SystemExtensions.DependencyInjection.Tests.Logging; @@ -8,13 +8,13 @@ namespace SystemExtensions.DependencyInjection.Tests.Logging; [TestClass] public class CVLoggerProviderTests { - private readonly Mock logsWriterMock = new(); + private readonly ILogsWriter logsWriterMock = Substitute.For(); private CVLoggerProvider cVLoggerProvider; [TestInitialize] public void TestInitialize() { - this.cVLoggerProvider = new CVLoggerProvider(this.logsWriterMock.Object); + this.cVLoggerProvider = new CVLoggerProvider(this.logsWriterMock); } [TestMethod] @@ -30,13 +30,6 @@ public class CVLoggerProviderTests { this.cVLoggerProvider.LogEntry(new Log()); - this.logsWriterMock.Verify(); - } - - private void SetupLogsWriter() - { - this.logsWriterMock - .Setup(u => u.WriteLog(It.IsAny())) - .Verifiable(); + this.logsWriterMock.ReceivedWithAnyArgs().WriteLog(Arg.Any()); } } diff --git a/SystemExtensions.DependencyInjection.Tests/Logging/CVLoggerTests.cs b/SystemExtensions.DependencyInjection.Tests/Logging/CVLoggerTests.cs index 1beee90..0a5c075 100644 --- a/SystemExtensions.DependencyInjection.Tests/Logging/CVLoggerTests.cs +++ b/SystemExtensions.DependencyInjection.Tests/Logging/CVLoggerTests.cs @@ -1,7 +1,7 @@ using FluentAssertions; using Microsoft.Extensions.Logging; using Microsoft.VisualStudio.TestTools.UnitTesting; -using Moq; +using NSubstitute; using System; using System.Logging; @@ -10,13 +10,13 @@ namespace SystemExtensions.DependencyInjection.Tests.Logging; [TestClass] public class CVLoggerTests { - private readonly Mock cvLoggerProviderMock = new(); + private readonly ICVLoggerProvider cvLoggerProviderMock = Substitute.For(); private CVLogger cVLogger; [TestInitialize] public void TestInitialize() { - this.cVLogger = new CVLogger(string.Empty, this.cvLoggerProviderMock.Object); + this.cVLogger = new CVLogger(string.Empty, this.cvLoggerProviderMock); } [TestMethod] @@ -59,17 +59,8 @@ public class CVLoggerTests [TestMethod] public void Log_CallsLogsProvider() { - this.SetupLoggerProvider(); - this.cVLogger.Log(LogLevel.Debug, new EventId(), "Some message", new Exception(), new Func((s, e) => string.Empty)); - this.cvLoggerProviderMock.Verify(); - } - - private void SetupLoggerProvider() - { - this.cvLoggerProviderMock - .Setup(u => u.LogEntry(It.IsAny())) - .Verifiable(); + this.cvLoggerProviderMock.ReceivedWithAnyArgs().LogEntry(Arg.Any()); } } diff --git a/SystemExtensions.DependencyInjection.Tests/Logging/LoggerResolverTests.cs b/SystemExtensions.DependencyInjection.Tests/Logging/LoggerResolverTests.cs index 91a4fa1..bfb13a7 100644 --- a/SystemExtensions.DependencyInjection.Tests/Logging/LoggerResolverTests.cs +++ b/SystemExtensions.DependencyInjection.Tests/Logging/LoggerResolverTests.cs @@ -1,7 +1,7 @@ using FluentAssertions; using Microsoft.Extensions.Logging; using Microsoft.VisualStudio.TestTools.UnitTesting; -using Moq; +using NSubstitute; using System; using System.Logging; @@ -10,9 +10,9 @@ namespace SystemExtensions.DependencyInjection.Tests.Logging; [TestClass] public class LoggerResolverTests { - private readonly Mock serviceProviderMock = new(); - private readonly Mock loggerFactoryMock = new(); - private readonly Mock loggerMock = new(); + private readonly Slim.IServiceProvider serviceProviderMock = Substitute.For(); + private readonly ILoggerFactory loggerFactoryMock = Substitute.For(); + private readonly ILogger loggerMock = Substitute.For(); private readonly LoggerResolver loggerResolver = new(); [TestMethod] @@ -53,7 +53,7 @@ public class LoggerResolverTests { this.SetupIServiceProvider(); - var logger = this.loggerResolver.Resolve(this.serviceProviderMock.Object, typeof(ILogger)); + var logger = this.loggerResolver.Resolve(this.serviceProviderMock, typeof(ILogger)); logger.Should().BeAssignableTo(); } @@ -63,7 +63,7 @@ public class LoggerResolverTests { this.SetupIServiceProvider(); - var logger = this.loggerResolver.Resolve(this.serviceProviderMock.Object, typeof(ILogger)); + var logger = this.loggerResolver.Resolve(this.serviceProviderMock, typeof(ILogger)); logger.Should().BeAssignableTo>(); } @@ -75,7 +75,7 @@ public class LoggerResolverTests Action action = new(() => { - this.loggerResolver.Resolve(this.serviceProviderMock.Object, typeof(string)); + this.loggerResolver.Resolve(this.serviceProviderMock, typeof(string)); }); action.Should().Throw(); @@ -88,7 +88,7 @@ public class LoggerResolverTests Action action = new(() => { - this.loggerResolver.Resolve(this.serviceProviderMock.Object, typeof(ILogger<>)); + this.loggerResolver.Resolve(this.serviceProviderMock, typeof(ILogger<>)); }); action.Should().Throw(); @@ -96,12 +96,8 @@ public class LoggerResolverTests private void SetupIServiceProvider() { - this.serviceProviderMock - .Setup(u => u.GetService()) - .Returns(this.loggerFactoryMock.Object); + this.serviceProviderMock.GetService().Returns(this.loggerFactoryMock); - this.loggerFactoryMock - .Setup(u => u.CreateLogger(It.IsAny())) - .Returns(this.loggerMock.Object); + this.loggerFactoryMock.CreateLogger(Arg.Any()).Returns(this.loggerMock); } } diff --git a/SystemExtensions.DependencyInjection.Tests/SystemExtensions.NetStandard.DependencyInjection.Tests.csproj b/SystemExtensions.DependencyInjection.Tests/SystemExtensions.NetStandard.DependencyInjection.Tests.csproj index 4178439..a3db032 100644 --- a/SystemExtensions.DependencyInjection.Tests/SystemExtensions.NetStandard.DependencyInjection.Tests.csproj +++ b/SystemExtensions.DependencyInjection.Tests/SystemExtensions.NetStandard.DependencyInjection.Tests.csproj @@ -9,13 +9,17 @@ - all runtime; build; native; contentfiles; analyzers; buildtransitive + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + diff --git a/SystemExtensions.DependencyInjection.Tests/WebSockets/ClientWebSocketResolverTests.cs b/SystemExtensions.DependencyInjection.Tests/WebSockets/ClientWebSocketResolverTests.cs index 0033e24..c10d298 100644 --- a/SystemExtensions.DependencyInjection.Tests/WebSockets/ClientWebSocketResolverTests.cs +++ b/SystemExtensions.DependencyInjection.Tests/WebSockets/ClientWebSocketResolverTests.cs @@ -1,9 +1,9 @@ using Microsoft.VisualStudio.TestTools.UnitTesting; -using Moq; using System; using System.Net.WebSockets; using FluentAssertions; using Microsoft.Extensions.Logging; +using NSubstitute; namespace SystemExtensions.NetStandard.DependencyInjection.Tests.WebSockets; @@ -11,7 +11,7 @@ namespace SystemExtensions.NetStandard.DependencyInjection.Tests.WebSockets; public sealed class ClientWebSocketResolverTests { private readonly ClientWebSocketResolver webSocketResolver = new(); - private readonly Mock serviceProviderMock = new(); + private readonly Slim.IServiceProvider serviceProviderMock = Substitute.For(); [TestMethod] public void CanResolve_IHttpClient_ReturnsTrue() @@ -39,11 +39,10 @@ public sealed class ClientWebSocketResolverTests [TestMethod] public void Resolve_TypedClient_ReturnsIClientWebSocketResolver() { - var loggerMock = new Mock>(); - this.serviceProviderMock.Setup(u => u.GetService(typeof(ILogger))) - .Returns(loggerMock.Object); + var loggerMock = Substitute.For>(); + this.serviceProviderMock.GetService(typeof(ILogger)).Returns(loggerMock); - var client = this.webSocketResolver.Resolve(this.serviceProviderMock.Object, typeof(IClientWebSocket)); + var client = this.webSocketResolver.Resolve(this.serviceProviderMock, typeof(IClientWebSocket)); client.Should().BeAssignableTo>(); } @@ -53,7 +52,7 @@ public sealed class ClientWebSocketResolverTests { Action action = new(() => { - this.webSocketResolver.Resolve(this.serviceProviderMock.Object, typeof(IClientWebSocket<>)); + this.webSocketResolver.Resolve(this.serviceProviderMock, typeof(IClientWebSocket<>)); }); action.Should().Throw(); @@ -64,7 +63,7 @@ public sealed class ClientWebSocketResolverTests { Action action = new(() => { - this.webSocketResolver.Resolve(this.serviceProviderMock.Object, typeof(string)); + this.webSocketResolver.Resolve(this.serviceProviderMock, typeof(string)); }); action.Should().Throw();