Replace Moq with NSubstitute (#51)

This commit is contained in:
2023-08-09 16:11:11 +02:00
committed by GitHub
parent fe049d4c00
commit b7244b2bdb
13 changed files with 101 additions and 132 deletions
@@ -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<Slim.IServiceProvider> serviceProviderMock = new();
private readonly Mock<IOptionsManager> optionsManagerMock = new();
private readonly Slim.IServiceProvider serviceProviderMock = Substitute.For<Slim.IServiceProvider>();
private readonly IOptionsManager optionsManagerMock = Substitute.For<IOptionsManager>();
[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<string>));
var liveOptions = this.liveOptionsResolver.Resolve(this.serviceProviderMock, typeof(ILiveOptions<string>));
liveOptions.Should().BeAssignableTo<ILiveOptions<string>>();
}
@@ -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<Exception>();
@@ -61,8 +61,6 @@ public class LiveOptionsResolverTests
private void SetupServiceProvider()
{
this.serviceProviderMock
.Setup(u => u.GetService<IOptionsManager>())
.Returns(this.optionsManagerMock.Object);
this.serviceProviderMock.GetService<IOptionsManager>().Returns(this.optionsManagerMock);
}
}
@@ -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<Slim.IServiceProvider> serviceProviderMock = new();
private readonly Mock<IOptionsManager> optionsManagerMock = new();
private readonly Slim.IServiceProvider serviceProviderMock = Substitute.For<Slim.IServiceProvider>();
private readonly IOptionsManager optionsManagerMock = Substitute.For<IOptionsManager>();
[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<string>));
var liveOptions = this.liveUpdateableOptionsResolver.Resolve(this.serviceProviderMock, typeof(ILiveUpdateableOptions<string>));
liveOptions.Should().BeAssignableTo<ILiveUpdateableOptions<string>>();
}
@@ -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<Exception>();
@@ -61,8 +61,6 @@ public class LiveUpdateableOptionsResolverTests
private void SetupServiceProvider()
{
this.serviceProviderMock
.Setup(u => u.GetService<IOptionsManager>())
.Returns(this.optionsManagerMock.Object);
this.serviceProviderMock.GetService<IOptionsManager>().Returns(this.optionsManagerMock);
}
}
@@ -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<string> optionsWrapper;
private readonly Mock<IOptionsManager> optionsManagerMock = new();
private readonly IOptionsManager optionsManagerMock = Substitute.For<IOptionsManager>();
[TestInitialize]
public void TestInitialize()
{
this.optionsWrapper = new LiveUpdateableOptionsWrapper<string>(this.optionsManagerMock.Object);
this.optionsWrapper = new LiveUpdateableOptionsWrapper<string>(this.optionsManagerMock);
}
[TestMethod]
public void GetValue_ReturnsValue()
{
this.optionsManagerMock
.Setup(u => u.GetOptions<string>())
.Returns("hello");
this.optionsManagerMock.GetOptions<string>().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<string>(It.IsAny<string>()))
.Verifiable();
this.optionsWrapper.UpdateOption();
this.optionsManagerMock.Verify();
this.optionsManagerMock.ReceivedWithAnyArgs().UpdateOptions(Arg.Any<string>());
}
}
@@ -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<Slim.IServiceProvider> serviceProviderMock = new();
private readonly Slim.IServiceProvider serviceProviderMock = Substitute.For<Slim.IServiceProvider>();
public Mock<IOptionsManager> OptionsManagerMock { get; } = new();
public IOptionsManager OptionsManagerMock { get; } = Substitute.For<IOptionsManager>();
[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<string>));
var liveOptions = this.optionsResolver.Resolve(this.serviceProviderMock, typeof(IOptions<string>));
liveOptions.Should().BeAssignableTo<IOptions<string>>();
}
@@ -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<Exception>();
@@ -63,8 +63,6 @@ public class OptionsResolverTests
private void SetupServiceProvider()
{
this.serviceProviderMock
.Setup(u => u.GetService<IOptionsManager>())
.Returns(this.OptionsManagerMock.Object);
this.serviceProviderMock.GetService<IOptionsManager>().Returns(this.OptionsManagerMock);
}
}
@@ -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<Slim.IServiceProvider> serviceProviderMock = new();
private readonly Mock<IOptionsManager> optionsManagerMock = new();
private readonly Slim.IServiceProvider serviceProviderMock = Substitute.For<Slim.IServiceProvider>();
private readonly IOptionsManager optionsManagerMock = Substitute.For<IOptionsManager>();
[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<string>));
var liveOptions = this.updateableOptionsResolver.Resolve(this.serviceProviderMock, typeof(IUpdateableOptions<string>));
liveOptions.Should().BeAssignableTo<IUpdateableOptions<string>>();
}
@@ -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<Exception>();
@@ -61,8 +61,6 @@ public class UpdateableOptionsResolverTests
private void SetupServiceProvider()
{
this.serviceProviderMock
.Setup(u => u.GetService<IOptionsManager>())
.Returns(this.optionsManagerMock.Object);
this.serviceProviderMock.GetService<IOptionsManager>().Returns(this.optionsManagerMock);
}
}
@@ -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<string> optionsWrapper;
private readonly Mock<IOptionsManager> optionsManagerMock = new();
private readonly IOptionsManager optionsManagerMock = Substitute.For<IOptionsManager>();
[TestInitialize]
public void TestInitialize()
{
this.optionsWrapper = new UpdateableOptionsWrapper<string>(this.optionsManagerMock.Object, Value);
this.optionsWrapper = new UpdateableOptionsWrapper<string>(this.optionsManagerMock, Value);
}
[TestMethod]
public void GetValue_ReturnsValue()
{
this.optionsManagerMock
.Setup(u => u.GetOptions<string>())
.Throws<Exception>();
this.optionsManagerMock.GetOptions<string>().Throws<Exception>();
var value = this.optionsWrapper.Value;
@@ -36,12 +35,8 @@ public class UpdateableOptionsWrapperTests
[TestMethod]
public void UpdateOption_CallsOptionsManager()
{
this.optionsManagerMock
.Setup(u => u.UpdateOptions<string>(It.IsAny<string>()))
.Verifiable();
this.optionsWrapper.UpdateOption();
this.optionsManagerMock.Verify();
this.optionsManagerMock.ReceivedWithAnyArgs().UpdateOptions(Arg.Any<string>());
}
}
@@ -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<object> httpClientBuilder;
private readonly Mock<IServiceProducer> serviceProducerMock = new();
private readonly IServiceProducer serviceProducerMock = Substitute.For<IServiceProducer>();
private readonly Uri baseAddress = new("http://contoso.co");
public HttpClientBuilderTests()
{
this.httpClientBuilder = new HttpClientBuilder<object>(this.serviceProducerMock.Object);
this.httpClientBuilder = new HttpClientBuilder<object>(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<Func<Slim.IServiceProvider, IHttpClient<object>>>(), false));
this.httpClientBuilder.Build();
this.serviceProducerMock.Verify();
this.serviceProducerMock.Received().RegisterScoped(Arg.Any<Func<Slim.IServiceProvider, IHttpClient<object>>>(), false);
}
[TestMethod]
public void Build_CreatesExpectedClient()
{
this.serviceProducerMock.Setup(u => u.RegisterScoped(It.IsAny<Func<Slim.IServiceProvider, IHttpClient<object>>>(), false))
.Callback<Func<Slim.IServiceProvider, IHttpClient<object>>, bool>((factory, _) =>
this.serviceProducerMock.When(u => u.RegisterScoped(Arg.Any<Func<Slim.IServiceProvider, IHttpClient<object>>>(), false))
.Do(callInfo =>
{
var client = factory(new Mock<Slim.IServiceProvider>().Object);
var factory = callInfo.ArgAt<Func<Slim.IServiceProvider, IHttpClient<object>>>(0);
var client = factory(Substitute.For<Slim.IServiceProvider>());
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<Func<Slim.IServiceProvider, IHttpClient<object>>>(), false))
.Callback<Func<Slim.IServiceProvider, IHttpClient<object>>, bool>((factory, _) =>
this.serviceProducerMock.When(u => u.RegisterScoped(Arg.Any<Func<Slim.IServiceProvider, IHttpClient<object>>>(), false))
.Do(callInfo =>
{
var client = factory(new Mock<Slim.IServiceProvider>().Object);
var factory = callInfo.ArgAt<Func<Slim.IServiceProvider, IHttpClient<object>>>(0);
var client = factory(Substitute.For<Slim.IServiceProvider>());
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<Func<Slim.IServiceProvider, IHttpClient<object>>>(), false))
.Callback<Func<Slim.IServiceProvider, IHttpClient<object>>, bool>((factory, _) =>
this.serviceProducerMock.When(u => u.RegisterScoped(Arg.Any<Func<Slim.IServiceProvider, IHttpClient<object>>>(), false))
.Do(callInfo =>
{
var client = factory(new Mock<Slim.IServiceProvider>().Object);
var factory = callInfo.ArgAt<Func<Slim.IServiceProvider, IHttpClient<object>>>(0);
var client = factory(Substitute.For<Slim.IServiceProvider>());
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<Func<Slim.IServiceProvider, IHttpClient<object>>>(), false))
.Callback<Func<Slim.IServiceProvider, IHttpClient<object>>, bool>((factory, _) =>
this.serviceProducerMock.When(u => u.RegisterScoped(Arg.Any<Func<Slim.IServiceProvider, IHttpClient<object>>>(), false))
.Do(callInfo =>
{
var client = factory(new Mock<Slim.IServiceProvider>().Object);
var factory = callInfo.ArgAt<Func<Slim.IServiceProvider, IHttpClient<object>>>(0);
var client = factory(Substitute.For<Slim.IServiceProvider>());
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<Func<Slim.IServiceProvider, IHttpClient<object>>>(), false))
.Callback<Func<Slim.IServiceProvider, IHttpClient<object>>, bool>((factory, _) =>
this.serviceProducerMock.When(u => u.RegisterScoped(Arg.Any<Func<Slim.IServiceProvider, IHttpClient<object>>>(), false))
.Do(callInfo =>
{
var client = factory(new Mock<Slim.IServiceProvider>().Object);
var factory = callInfo.ArgAt<Func<Slim.IServiceProvider, IHttpClient<object>>>(0);
var client = factory(Substitute.For<Slim.IServiceProvider>());
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<Func<Slim.IServiceProvider, IHttpClient<object>>>(), false))
.Callback<Func<Slim.IServiceProvider, IHttpClient<object>>, bool>(async (factory, _) =>
this.serviceProducerMock.When(u => u.RegisterScoped(Arg.Any<Func<Slim.IServiceProvider, IHttpClient<object>>>(), false))
.Do(async callInfo =>
{
var client = factory(new Mock<Slim.IServiceProvider>().Object);
var factory = callInfo.ArgAt<Func<Slim.IServiceProvider, IHttpClient<object>>>(0);
var client = factory(Substitute.For<Slim.IServiceProvider>());
await client.GetAsync(this.baseAddress);
handlerMock.Called.Should().BeTrue();
});
@@ -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<Slim.IServiceProvider> serviceProviderMock = new();
private readonly Slim.IServiceProvider serviceProviderMock = Substitute.For<Slim.IServiceProvider>();
[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<string>));
var client = this.httpClientResolver.Resolve(this.serviceProviderMock, typeof(IHttpClient<string>));
client.Should().BeAssignableTo<IHttpClient<string>>();
}
@@ -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<Exception>();
@@ -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<Exception>();
@@ -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<ILogsWriter> logsWriterMock = new();
private readonly ILogsWriter logsWriterMock = Substitute.For<ILogsWriter>();
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<Log>()))
.Verifiable();
this.logsWriterMock.ReceivedWithAnyArgs().WriteLog(Arg.Any<Log>());
}
}
@@ -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<ICVLoggerProvider> cvLoggerProviderMock = new();
private readonly ICVLoggerProvider cvLoggerProviderMock = Substitute.For<ICVLoggerProvider>();
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<string, Exception, string>((s, e) => string.Empty));
this.cvLoggerProviderMock.Verify();
}
private void SetupLoggerProvider()
{
this.cvLoggerProviderMock
.Setup(u => u.LogEntry(It.IsAny<Log>()))
.Verifiable();
this.cvLoggerProviderMock.ReceivedWithAnyArgs().LogEntry(Arg.Any<Log>());
}
}
@@ -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<Slim.IServiceProvider> serviceProviderMock = new();
private readonly Mock<ILoggerFactory> loggerFactoryMock = new();
private readonly Mock<ILogger> loggerMock = new();
private readonly Slim.IServiceProvider serviceProviderMock = Substitute.For<Slim.IServiceProvider>();
private readonly ILoggerFactory loggerFactoryMock = Substitute.For<ILoggerFactory>();
private readonly ILogger loggerMock = Substitute.For<ILogger>();
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<ILogger>();
}
@@ -63,7 +63,7 @@ public class LoggerResolverTests
{
this.SetupIServiceProvider();
var logger = this.loggerResolver.Resolve(this.serviceProviderMock.Object, typeof(ILogger<string>));
var logger = this.loggerResolver.Resolve(this.serviceProviderMock, typeof(ILogger<string>));
logger.Should().BeAssignableTo<ILogger<string>>();
}
@@ -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<Exception>();
@@ -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<Exception>();
@@ -96,12 +96,8 @@ public class LoggerResolverTests
private void SetupIServiceProvider()
{
this.serviceProviderMock
.Setup(u => u.GetService<ILoggerFactory>())
.Returns(this.loggerFactoryMock.Object);
this.serviceProviderMock.GetService<ILoggerFactory>().Returns(this.loggerFactoryMock);
this.loggerFactoryMock
.Setup(u => u.CreateLogger(It.IsAny<string>()))
.Returns(this.loggerMock.Object);
this.loggerFactoryMock.CreateLogger(Arg.Any<string>()).Returns(this.loggerMock);
}
}
@@ -9,13 +9,17 @@
<ItemGroup>
<PackageReference Include="FluentAssertions" Version="6.11.0" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.5.0" />
<PackageReference Include="Moq" Version="4.18.4" />
<PackageReference Include="MSTest.TestAdapter" Version="3.0.2" />
<PackageReference Include="MSTest.TestFramework" Version="3.0.2" />
<PackageReference Include="coverlet.collector" Version="3.2.0">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
<PackageReference Include="NSubstitute" Version="5.0.0" />
<PackageReference Include="NSubstitute.Analyzers.CSharp" Version="1.0.16">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
</ItemGroup>
<ItemGroup>
@@ -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<Slim.IServiceProvider> serviceProviderMock = new();
private readonly Slim.IServiceProvider serviceProviderMock = Substitute.For<Slim.IServiceProvider>();
[TestMethod]
public void CanResolve_IHttpClient_ReturnsTrue()
@@ -39,11 +39,10 @@ public sealed class ClientWebSocketResolverTests
[TestMethod]
public void Resolve_TypedClient_ReturnsIClientWebSocketResolver()
{
var loggerMock = new Mock<ILogger<string>>();
this.serviceProviderMock.Setup(u => u.GetService(typeof(ILogger<string>)))
.Returns(loggerMock.Object);
var loggerMock = Substitute.For<ILogger<string>>();
this.serviceProviderMock.GetService(typeof(ILogger<string>)).Returns(loggerMock);
var client = this.webSocketResolver.Resolve(this.serviceProviderMock.Object, typeof(IClientWebSocket<string>));
var client = this.webSocketResolver.Resolve(this.serviceProviderMock, typeof(IClientWebSocket<string>));
client.Should().BeAssignableTo<IClientWebSocket<string>>();
}
@@ -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<Exception>();
@@ -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<Exception>();